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

时间:2009-07-27 14:34:01

标签: php regex

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

5 个答案:

答案 0 :(得分:57)

尝试:

/(@|at)/

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

答案 1 :(得分:34)

/(?:@|at)/
mmyers的答案将进行抓捕;我的不会。您应该使用哪种方法取决于您是否想要捕捉。

答案 2 :(得分:4)

如果这只是你要捕获的两件事,那就不需要正则表达式了

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

答案 3 :(得分:2)

你试过吗

@|at

适用于(在.NET正则表达式中)以下文本

johnsmith@gmail.com johnsmithatgmail.com

答案 4 :(得分:0)

那又怎么样:

^(\w*(@|at))

针对:

  • johnsmith @ gmail.com
  • johnsmithat gmail.com
  • jonsmith @ atgmail.com