首頁 >web前端 >js教程 >如何在 JavaScript 正規表示式中實現負向後查找?

如何在 JavaScript 正規表示式中實現負向後查找?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-19 06:53:13449瀏覽

How Can I Implement Negative Lookbehind in JavaScript Regex?

如何在JavaScript 中實現負向後查找

JavaScript 本身並不支援負向後查找,這會阻礙創建與以下字符串匹配的正規表示式:不要以特定字元開頭。

使用 Lookbehind 的解決方案斷言(2018 年之後)

2018 年,JavaScript 引入了lookbehind斷言,允許正向和負向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]) : 'Ø');
  });

範例

說明其用法:

  • 對於中提到的最初問題在上下文中,以下正規表示式將符合“jim ”或“m”中的“m”,但不匹配'jam':
test(['jim', 'm', 'jam'], /m(?!([abcdefg]))/)
  • 另一個例子,匹配“max-height”但不匹配“line-height 」:
test(['max-height', 'line-height'], /thgieh(?!(-enil))/)

以上是如何在 JavaScript 正規表示式中實現負向後查找?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn