1

バックスラッシュでエスケープされていない文字(たとえば)を一致させようとしaていますが、負の先読みまたは負の後読みを使用せずに一致させたいのですが、これはこれまでに試したものですが、機能しません

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

しかし、どちらもtrueを返します。私は何が間違っているのですか?

4

1 に答える 1

2

'a'が前に付いていないものをテストするには、'\'次を使用できます

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

文字列の先頭またはではない文字の(^|[^\\])いずれかに一致します。^'\'

正規表現では、ではない[^a]すべての文字に一致します。これは、角かっこで囲まれた文字に0回以上一致することを意味します。したがって、任意の文字列がパターンに0回一致する可能性があるため、すべての文字列が真にテストされます。 'a'()*

于 2013-03-17T13:24:48.720 に答える