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

在javascript中使用正则表达式时遇到问题,javascript,regex,Javascript,Regex,我试图构造一个正则表达式来解析提到的内容。e、 g @aaa @bbb@ccc @dddd @eeee 它应该只匹配aaa、dddd和eeee,但不匹配bbb@ccc 我尝试了以下正则表达式,但失败了: /(?:^|\s)@(\S+)/g 可以在此处找到一个示例: 您可以将此正则表达式与\B和求反字符类一起使用: \B@([^@\s]+)(?=\s|$) 正则表达式分解: \B:断言\B不匹配的位置 [^@\s]+:匹配一个或多个非@且非空白的字符 (?=\s |$):向前看,断言下一

我试图构造一个正则表达式来解析提到的内容。e、 g

@aaa @bbb@ccc @dddd @eeee
它应该只匹配aaaddddeeee,但不匹配bbb@ccc

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

/(?:^|\s)@(\S+)/g
可以在此处找到一个示例:

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

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

正则表达式分解:

  • \B
    :断言
    \B
    不匹配的位置
  • [^@\s]+
    :匹配一个或多个非
    @
    且非空白的字符
  • (?=\s |$)
    :向前看,断言下一个位置有空格或行尾

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

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

正则表达式分解:

  • \B
    :断言
    \B
    不匹配的位置
  • [^@\s]+
    :匹配一个或多个非
    @
    且非空白的字符
  • (?=\s |$)
    :向前看,断言下一个位置有空格或行尾

您的RE不匹配,因为\S.\S也匹配@,所以您需要将其替换为名称。你的RE应该是

/(?:^|\s)@([^@\s]+)/g
在这里,它将只匹配来自“@aa@”的“aa”。如果要在名称后面加空格,则应使用

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

您的RE不匹配,因为\S.\S也匹配@,因此您需要将其替换为名称。你的RE应该是

/(?:^|\s)@([^@\s]+)/g
在这里,它将只匹配来自“@aa@”的“aa”。如果要在名称后面加空格,则应使用

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

谢谢,这很有效。但我仍然不确定\B如何工作我再次检查了该模式。此处失败:您可以使用:
(?:^\s)@([^@\s]+)(?=\s |$)
,谢谢您的帮助。但我仍然不确定\B如何工作我再次检查了该模式。此处失败:您可以使用:
(?:^\s)@([^@\s]+)(?=\s$)