2014-02-28 74 views
0

我有这行代码:PHP preg_match_all字符串开头@通过任何字符以下

preg_match_all('/(?!\b)(@\w+\b)/', $s, $rgMatches); 

$ s是要被搜索的长字符串(包括空格),$ rgMatches是火柴

的阵列

该行代码将与字符串匹配,如@blahblah或@ blah22blah 但是,如果字符串包含@ blah.blah(字母中的一个点),它不匹配。

我该如何改进我的代码?

+0

翻译为什么在开始时写'(?!\ b)'? –

+0

@CasimiretHippolyte它只是肯定的,但它可以被删除,没问题,第二部分需要修复 –

+0

确定是什么?你想做什么?你试图找到用户,但不是电子邮件? –

回答

0

您可以使用此模式:

/\[email protected]\w+(?:\.\w+)*/ 

或更宽松:

/\[email protected][\w.]+/ 

\B可能不是你想要做什么有用的,它是(?!\b)

+0

如何处理这个示例@ Transient @ Wind或@ Transient#Wind –

+0

@TransientWind:这不是您在原始问题中提出的问题。 –

+0

对不起,我应该提到有关特殊字符的问题,我只记得一个点是个案例... –

相关问题