2017-07-16 74 views
-1

JS演示:包含^和*的正則表達式會丟失一個字符?

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

輸出:

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

爲什麼group(1)zzxxxy,而不是zzxxxyy

+3

https://regex101.com/r/sIbCyd/3 - 仔細閱讀說明面板,*小心*。 –

+2

你不能在[字符類](http://www.regular-expressions.info/charclass.html)中使用組 – Bergi

回答

2

[^(?:abc)]單個字符不是(?:a匹配或bc)。它相當於[^)(abc:?]

+0

因此,如果想使用正則表達式匹配不以'abc'結尾的字符串,而不是'(。* )[^ a] [^ b] [^ c]',怎麼做? '(。*)(?!abc)'仍然會匹配1abc。 –

+0

@JiacaiLiu'if(!/ abc $ /。test(str))'。取而代之的是在JS代碼中取消結果。 – melpomene

+0

它的工作原理,但在我的情況下,只能使用正則表達式。 –

相關問題