我正在努力想出一个正则表达式,只能在单词开头找到“@”符号。例如:
这里:The @dog went to the park.
但不是这里:The d@og went to the park.
或者这里:The@dog went to the park.
基本上,我只想捕获普通的“提及”行为,而忽略奇怪的边缘情况。我觉得这种情况很常见,一定有一些已经被广泛接受的正则表达式可以解决。
编辑:
我尝试了这个:
/(@\w+)/gi
但是它捕捉到了我不想获得的情况。
我正在努力想出一个正则表达式,只能在单词开头找到“@”符号。例如:
这里:The @dog went to the park.
但不是这里:The d@og went to the park.
或者这里:The@dog went to the park.
基本上,我只想捕获普通的“提及”行为,而忽略奇怪的边缘情况。我觉得这种情况很常见,一定有一些已经被广泛接受的正则表达式可以解决。
编辑:
我尝试了这个:
/(@\w+)/gi
但是它捕捉到了我不想获得的情况。
您可以使用以下正则表达式:
/\B@\w+/g
\B
匹配非单词边界,因此,在 @
前需要一个非单词字符(或字符串的开头)。
请参见正则表达式演示
var re = /\B@\w+/g;
var str = 'The @dog went to the park.\nBut not here: The d@og went to the park.\nOr here: The@dog went to the park.';
var res = str.match(re);
document.body.innerHTML = "<pre>" + JSON.stringify(res, 0, 4) + "</pre>";
-
,.
,_
? - zomars\B@\S+\b
或\B@\S+
或仅使用@\S+
。 - Wiktor Stribiżew
^@[A-Za-z]+|.+ @[A-Za-z]+
@
,或者在一个单词之后开头的@
。