在javascript中逃避@@的负面观察

时间:2016-11-29 16:33:23

标签: javascript regex

我正在计算如何创建一个匹配@test的正则表达式,只有当它与另一个@不匹配时。我有一个带有负面lookbehind的解决方案,但JS不支持该功能。有没有负面看法的解决方案? Ex. This @test should be a match. This @@test should not be a match.

3 个答案:

答案 0 :(得分:1)

即使@test位于字符串的开头,也可以使用

(?:^|[^@])@test

Regex101

答案 1 :(得分:1)

您可以使用@test前面的否定字符组排除:

/[^@]@test/

这不适用于该行的开头,但可以使用您的示例文本。如果你也需要担心线的开头,你可以这样做:

/(^|[^@])@test/

这会将@test作为该行中的第一件事,或@test前面带有一些非@字符。

答案 2 :(得分:0)

否定的角色类怎么样。

/(?:[^@]|^)@test/
  • [^@]匹配@
  • 以外的任何内容

示例

"This @@test should not be a match".match(/(?:[^@]|^)@test/)
// null
"This @test should not be a match".match(/(?:[^@]|^)@test/)
// [" @test"]