我有以下字符串:
foo_0_13
foz[0][bar][]
far_0
我有一个约定,需要从像 foo_0_13
这样的字符串进行匹配和far_2
下划线和后面的数字,例如 _0
或_2
...对于具有结构 foz[0][bar][]
的任何字符串或foz[3]
我需要匹配[0]
或[3]
我已经尝试过((\_\d)|\[\d\])
但这匹配 _0_1
,我怎样才能让它只匹配_0
?
我只需要查找第一次出现的“下划线数字”组合。
第二部分:
如果我有一个多次出现 _0
的 html 分区和[0]
如
<div id="foo_0_13" name="bar[0][xxx][]"> <p id="par_0">Test</p> </div>
我需要将所有这些事件替换为 _1
这样html就变成了
<div id="foo_1_13" name="bar[1][xxx][]"> <p id="par_1">Test</p> </div>
知道我正在使用 javascript,我如何详细说明这一点以获得所需的 html?
最佳答案
您可以尝试以下正则表达式替换。
var res = str.replace(/("[a-z]+[_[])\d+/g, '$01' + '1'); // 1 = new digit
See regex demo at regex101或js fiddle
在替换中,我使用 '$01' + '1'
只是为了在视觉上将反向引用组 1 与新添加的数字分开。实际上,替换将是 $11
或 $011
其中最后一个 to be preferred .
关于javascript - 匹配第一次出现的下划线后跟数字并替换 html 中的匹配集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35540618/