我有这行代码:PHP preg_match_all字符串开头@通过任何字符以下
preg_match_all('/(?!\b)(@\w+\b)/', $s, $rgMatches);
$ s是要被搜索的长字符串(包括空格),$ rgMatches是火柴
的阵列该行代码将与字符串匹配,如@blahblah或@ blah22blah 但是,如果字符串包含@ blah.blah(字母中的一个点),它不匹配。
我该如何改进我的代码?
我有这行代码:PHP preg_match_all字符串开头@通过任何字符以下
preg_match_all('/(?!\b)(@\w+\b)/', $s, $rgMatches);
$ s是要被搜索的长字符串(包括空格),$ rgMatches是火柴
的阵列该行代码将与字符串匹配,如@blahblah或@ blah22blah 但是,如果字符串包含@ blah.blah(字母中的一个点),它不匹配。
我该如何改进我的代码?
您可以使用此模式:
/\[email protected]\w+(?:\.\w+)*/
或更宽松:
/\[email protected][\w.]+/
的\B
可能不是你想要做什么有用的,它是(?!\b)
如何处理这个示例@ Transient @ Wind或@ Transient#Wind –
@TransientWind:这不是您在原始问题中提出的问题。 –
对不起,我应该提到有关特殊字符的问题,我只记得一个点是个案例... –
翻译为什么在开始时写'(?!\ b)'? –
@CasimiretHippolyte它只是肯定的,但它可以被删除,没问题,第二部分需要修复 –
确定是什么?你想做什么?你试图找到用户,但不是电子邮件? –