負(fù)向預(yù)查是JavaScript中一種強(qiáng)大的正則表達(dá)式特性,它能夠有效地匹配不滿足某一模式的字符串。與正向預(yù)查不同,負(fù)向預(yù)查不會(huì)在匹配字符串時(shí)將預(yù)查匹配到的字符串作為匹配結(jié)果之一。負(fù)向預(yù)查的語(yǔ)法是通過(guò)在表達(dá)式中使用"(?!pattern)"來(lái)實(shí)現(xiàn)的。
例如,我們想要匹配不包含"dog"單詞的字符串。我們可以使用負(fù)向預(yù)查來(lái)實(shí)現(xiàn)這一匹配:
let str = "I love my cat!"; let regexp = /(?<!dog)\b\w+\b/; console.log(str.match(regexp));
在這個(gè)表達(dá)式中,"(?
下面是另一個(gè)例子,我們想要匹配那些沒(méi)有被雙引號(hào)包含的字符串。我們可以通過(guò)使用負(fù)向預(yù)查來(lái)實(shí)現(xiàn)這一目標(biāo):
let str = 'Hola "amigo", hello "world"'; let regexp = /(?!\B"[^"]*)\b\w+\b(?![^"]*"\B)/g; console.log(str.match(regexp));
在這個(gè)表達(dá)式中,"(?!\B"[^"]*)"表示字符串沒(méi)有被雙引號(hào)包含。" \b\w+\b"表示匹配一個(gè)完整的單詞。"(?![^"]*"\B)"表示結(jié)束位置不在雙引號(hào)中。運(yùn)行以上程序,輸出的結(jié)果是 "Hola"、"hello" 和 "world"。
負(fù)向預(yù)查在JavaScript中是一種非常有用的特性,它能夠幫助我們快速、有效地匹配不滿足某一特定模式的字符串。負(fù)向預(yù)查是正則表達(dá)式特性中的一個(gè)重要組成部分,在處理復(fù)雜的字符匹配問(wèn)題時(shí)非常實(shí)用。