我正在计算如何创建一个匹配@test的正则表达式,只有当它与另一个@不匹配时。我有一个带有负面lookbehind的解决方案,但JS不支持该功能。有没有负面看法的解决方案?
Ex.
This @test should be a match.
This @@test should not be a match.
答案 0 :(得分:1)
答案 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"]