现在Javascript已经看起来很好(截至ES2018),在较新的环境中,你可以在这些情况下完全避免组。相反,先看看你正在捕获的组之前发生了什么,并预先看看后面发生了什么,然后用以下几句话替换:!NEW_ID!
const str = 'name="some_text_0_some_text"';
console.log(
str.replace(/(?<=name="\w+)\d+(?=\w+")/, '!NEW_ID!')
);
使用此方法,完全匹配只是需要更换的部件。
-
(?<=name="\w+)
- 查找后跟单词字符(幸运的是,在 Javascript 中,查找后跟不必是固定宽度!name="
-
\d+
- 匹配一个或多个数字 - 模式中唯一不在查找中的部分,字符串中唯一将在结果匹配中的部分
-
(?=\w+")
- 查找单词字符,后跟"
`
请记住,外观隐藏是相当新的。它适用于V8的现代版本(包括Chrome,Opera和Node),但不适用于大多数其他环境,至少现在还不行。因此,虽然您可以在 Node 和您自己的浏览器中可靠地使用 lookbehind(如果它在 V8 的现代版本上运行),但随机客户端(如在公共网站上)尚未充分支持它。