正则表达式包括以@开头但不在字符串中间的字符串?

时间:2013-03-14 04:05:54

标签: php regex

我正在尝试将@username与twitter相匹配。我正在使用的正则表达式:“([@])(\ S +)”对此非常有效。

但是限制如下 test@test.com与test.com匹配

现在我想完全排除test@test.com

但是,我的一些用户拥有用户名test@test.com,并且如果他们实际上在该电子邮件用户名前面有@,则希望包含它们。

所以@ test @ test.com应匹配

要点: 需要匹配:

@username

@test

@测试@ test.com

不想匹配:

test@test.com

4 个答案:

答案 0 :(得分:2)

我建议使用负面的lookbehind,例如:

(?<!\S)@(\S+)

这不包括@foo之前的任何可能空格,因此您可以毫无问题地替换它。

答案 1 :(得分:1)

作为答案,您不希望在文本中间检查@,但前面需要一个空格,因此请使用(\s|^)+([@])(\S+)

答案 2 :(得分:0)

正则表达式看起来像这样:^@.* ^会将你锚定到行的开头或字符串。一定要看看OverAPI Regex,他们的备忘单非常好。

答案 3 :(得分:0)

^ @。* 上面的正则表达式与您要查找的内容相匹配