在javascript中遇到正则表达式问题

时间:2017-11-29 19:22:37

标签: javascript regex

我正在尝试构建一个解析提及的正则表达式。 e.g。

@aaa @bbb@ccc @dddd @eeee

它应仅匹配 aaa dddd eeee ,但不能匹配 bbb @ ccc

我尝试过以下正则表达式,但失败了:

/(?:^|\s)@(\S+)/g

可以在这里找到一个例子: https://regexr.com/3h9o5

2 个答案:

答案 0 :(得分:2)

您可以将此正则表达式与\B和否定字符类一起使用:

\B@([^@\s]+)(?=\s|$)

RegEx Demo

RegEx分手:

  • \B:断言\b不匹配的位置
  • [^@\s]+:匹配1个或更多不是@但不是空格的字符
  • (?=\s|$):预见断言我们在下一个位置有空格或行尾

答案 1 :(得分:1)

由于\ S,你的RE不匹配。 \ S匹配@,所以你需要替换它的名称应该是什么。您的RE应该是

/(?:^|\s)@([^@\s]+)/g

这里只会匹配' aa'来自' @aa @'。如果你想在名称后面加上空格,你应该使用

/(?:^|\s)@([^@\s]+)(?=\s|$)/g