繁体   English   中英

如何匹配正则表达式中的两个单词之一?

[英]How do you match one of two words in a regular expression?

我想在正则表达式中匹配 @ 或 'at'。 有人可以帮忙吗? 我尝试使用 ? 运营商,给我 /@?(at)?/ 但这没有用

尝试:

/(@|at)/

这意味着@at但不是两者。 它还在一个组中捕获,因此您可以稍后通过反向引用访问完全匹配项(如果需要)。

/(?:@|at)/

mmyers 的回答将执行括号捕获; 我的不会。 您应该使用哪个取决于您是否想要括号捕获。

如果这只是您想要捕获的两件事,则不需要正则表达式

if ( strpos($string,"@")!==FALSE || strpos($string,"at") !==FALSE ) {
  # do your thing
}

你有没有尝试过

@|at

适用于(在 .NET regex 风格中)以下文本

johnsmith@gmail.com johnsmithatgmail.com

关于什么:

^(\w*(@|at))

为了:

  • 约翰史密斯@ gmail.com
  • johnsmithat gmail.com
  • jonsmith @ atgmail.com

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM