我正在尝试匹配一个没有用反斜杠转义的字母(比方说a
),但是我想这样做而不使用负向前瞻或负面的外观,这是我到目前为止所尝试的但是它不起作用
/([^\\][^a])*/.test('should be true a.'); // true
/([^\\][^a])*/.test('should be not true \\a.'); // true
但他们都回归真实。我做错了什么?
答案 0 :(得分:2)
要测试'a'
前面没有'\'
的{{1}},您可以使用
/(^|[^\\])a/.test( 'should be true a.' ); // true
/(^|[^\\])a/.test( 'should be not true \\a.' ); // false
(^|[^\\])
匹配字符串^
的开头或非'\'
的字符。
在正则表达式中,[^a]
匹配不 'a'
的任何字符,而()*
表示匹配括号 0中的内容或更多次 - 所以任何字符串都会测试为true,因为任何字符串都可以匹配模式零次。