我正在尝试构建一个解析提及的正则表达式。 e.g。
@aaa @bbb@ccc @dddd @eeee
它应仅匹配 aaa , dddd 和 eeee ,但不能匹配 bbb @ ccc
我尝试过以下正则表达式,但失败了:
/(?:^|\s)@(\S+)/g
可以在这里找到一个例子: https://regexr.com/3h9o5
答案 0 :(得分:2)
您可以将此正则表达式与\B
和否定字符类一起使用:
\B@([^@\s]+)(?=\s|$)
RegEx分手:
\B
:断言\b
不匹配的位置[^@\s]+
:匹配1个或更多不是@
但不是空格的字符(?=\s|$)
:预见断言我们在下一个位置有空格或行尾答案 1 :(得分:1)
由于\ S,你的RE不匹配。 \ S匹配@,所以你需要替换它的名称应该是什么。您的RE应该是
/(?:^|\s)@([^@\s]+)/g
这里只会匹配' aa'来自' @aa @'。如果你想在名称后面加上空格,你应该使用
/(?:^|\s)@([^@\s]+)(?=\s|$)/g