在 JavaScript 中实现负向后查找功能
负向后查找断言允许匹配不以特定字符集开头的字符串。尽管 JavaScript 中缺乏对负向后查找的明确支持,但还是有可行的替代方案。
从 2018 年起,Lookbehind 断言已合并到 ECMAScript 规范中:
// Positive lookbehind: (?<=...) // Negative lookbehind: (?<!...)
Pre -2018 年临近
或者,如果负向后查找不可用,请考虑以下方法:
例如:
const reverse = (string) => { return string.split('').reverse().join(''); }; const test = (inputStrings, reversedRegex) => { inputStrings.map(reverse).forEach((reversedString, idx) => { const match = reversedRegex.test(reversedString); console.log( inputStrings[idx], match, 'token:', match ? reverse(reversedRegex.exec(reversedString)[0]) : 'Ø' ); }); };
示例 1: 匹配“jim”或“m”中的“m”,但是不在"jam":
test(['jim', 'm', 'jam'], /m(?!([abcdefg]))/);
输出:
jim true token: m m true token: m jam false token: Ø
示例 2: 匹配“max-height”但不匹配"行高":
test(['max-height', 'line-height'], /thgieh(?!(-enil))/);
输出:
max-height true token: height line-height false token: Ø
以上是如何在 JavaScript 中模拟否定后向断言?的详细内容。更多信息请关注PHP中文网其他相关文章!