由于后视在 JS 中不起作用,您可以只匹配您的主要正则表达式,在您的情况下\d
,然后手动检查边界。
const manualBoundaries = /\d/g
const matches = [];
while ((match = manualBoundaries.exec(str)) !== null) {
const m = match[0]
const i = match.index
if ((i == 0 || str[i - 1].match(/(\W|_)/)) &&
(i + m.length == str.length || str[i + m.length].match(/(\W|_)/)))
matches.push(m)
}
或者更简洁地说,用假替换
const matches = [];
str.replace(manualBoundaries, (m, i) => {
if ((i == 0 || str[i - 1].match(/(\W|_)/)) &&
(i + m.length == str.length || str[i + m.length].match(/(\W|_)/)))
matches.push(m);
});
在这里试试:https ://jsfiddle.net/djjeck/mg2gzpf1/