1

我正在尝试匹配一个a没有用反斜杠转义的字母(比方说),但我想在不使用负前瞻或负后瞻的情况下做到这一点,这是我迄今为止尝试过的,但它不起作用

/([^\\][^a])*/.test('should be true a.'); // true
/([^\\][^a])*/.test('should be not true \\a.'); // true

但他们都返回真。我究竟做错了什么?

4

1 回答 1

2

要测试'a'前面没有 a'\'你可以使用

/(^|[^\\])a/.test( 'should be true a.' );        // true
/(^|[^\\])a/.test( 'should be not true \\a.' );  // false

(^|[^\\])匹配字符串的开头或^不是的字符'\'

在您的正则表达式中,[^a]匹配任何不是 'a'的字符,并且()*意味着匹配括号内的内容次或多次 - 所以任何字符串都将测试为真,因为任何字符串都可以匹配模式零次。

于 2013-03-17T13:24:48.720 回答