2017-07-16 5 views
-1

JSのデモ:^と*を含む正規表現は1文字を失うでしょうか?

// words not ending with abc 
var r = new RegExp("(.*)[^(?:abc)]$") 
var s = 'zzxxxyy' 
console.log(r.exec(s)) 

が出力:

[ 'zzxxxyy', 'zzxxxy', index: 0, input: 'zzxxxyy' ]

zzxxxyy

+3

https://regex101.com/r/sIbCyd/3 - [説明]パネルを注意深く読んでください*。 –

+2

[文字クラス]内でグループを使用することはできません(http://www.regular-expressions.info/charclass.html) – Bergi

答えて

2

[^(?:abc)](または?または:aではない単一の文字に一致するのではなく、group(1)zzxxxyである理由またはbまたはcまたは)です。これは[^)(abc:?]に相当します。

+0

したがって、regexpを使用して、 '。* )[^ a] [^ b] [^ c] '、どうやって? '(。*)(?abc)'は '1abc'とまだマッチします。 –

+0

@JiacaiLiu 'if(!/ abc $ /。test(文字列))'。 JSコードで結果を無効にします。 – melpomene

+0

それは動作しますが、私の状況ではregexpだけが使用できます。 –

関連する問題