2009-07-27 68 views
29

我想在正则表达式中匹配@或'at'。有人可以帮忙吗?我试过使用?运营商,给我/ @(AT)/但没有工作如何匹配正则表达式中的两个单词之一?

+6

啊,来吧!交替是基本的。 – Gumbo 2009-07-27 14:44:17

+0

[正则表达式包含一个字或另一个](http://stackoverflow.com/q/17166618/995714) – 2016-03-11 09:29:02

回答

54

尝试:??

/(@|at)/ 

这意味着无论是@at但不能同时。它也被捕获在一个组中,所以如果你愿意,你可以通过反向引用来访问完全匹配。

+0

会处理电子邮件地址类似于[email protected]或latitudeataddress.com的情况吗? – 2009-07-27 14:50:28

+0

为什么不呢? “处理”是什么意思? – 2009-07-27 14:56:59

+0

它会产生假阳性匹配是我问我猜。 – 2009-07-27 15:17:36

32
/(?:@|at)/ 

mmyers的答案将执行paren捕获;我的不会。你应该使用哪个取决于你是否想要paren捕获。

2

你试过

@|at 

,对于工作(在.NET正则表达式的味道)以下文本

[email protected] johnsmithatgmail.com

3

,如果这是唯一的两件事情你想捕捉,不需要正则表达式

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