如何在JavaScript 中實現負向後查找
JavaScript 本身並不支援負向後查找,這會阻礙創建與以下字符串匹配的正規表示式:不要以特定字元開頭。
使用 Lookbehind 的解決方案斷言(2018 年之後)
2018 年,JavaScript 引入了lookbehind斷言,允許正向和負向lookbehind:
例如,以下正規表示式符合'm' 字元在'jim' 或'm' 中,但不在'jam':
(?<!([abcdefg]))m
2018 年之前的解決方案
2018年之前,一種解決方法涉及反轉輸入字串,與反轉的正規表示式匹配,然後反轉匹配。這個過程可以如下實現:
const reverse = s => s.split('').reverse().join(''); const test = (stringToTests, reversedRegexp) => stringToTests .map(reverse) .forEach((s,i) => { const match = reversedRegexp.test(s); console.log(stringToTests[i], match, 'token:', match ? reverse(reversedRegexp.exec(s)[0]) : 'Ø'); });
範例
說明其用法:
test(['jim', 'm', 'jam'], /m(?!([abcdefg]))/)
test(['max-height', 'line-height'], /thgieh(?!(-enil))/)
以上是如何在 JavaScript 正規表示式中實現負向後查找?的詳細內容。更多資訊請關注PHP中文網其他相關文章!