如何在 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]) : 'Ø'); });<p><strong>示例</strong></p> <p>说明其用法:</p> <ul><li>对于中提到的最初问题在上下文中,以下正则表达式将匹配“jim”或“m”中的“m”,但不匹配'jam':</li></ul> <pre class="brush:php;toolbar:false">test(['jim', 'm', 'jam'], /m(?!([abcdefg]))/)
test(['max-height', 'line-height'], /thgieh(?!(-enil))/)
以上是如何在 JavaScript 正则表达式中实现负向后查找?的详细内容。更多信息请关注PHP中文网其他相关文章!