我已阅读How do you pass a variable to a Regular Expression javascript
我正在寻找创建一个正则表达式来获取和替换变量值。
section = 'abc';
reg = new RegExp('\[' + section + '\]\[\d+\]','g');
num = duplicate.replace(reg,"$1++");
其中$1 = \d+ +1
和...没有增量......它不起作用......
它返回的内容如下:
[abc]$1
有什么想法吗?
答案 0 :(得分:1)
我认为您需要阅读有关正则表达式的更多信息。您当前的正则表达式出现在:
/[abc][d+]/g
哪个匹配“a”“b”或“c”,后跟“d”或“+”,例如:ad
或c+
或bd
甚至zebra++
等。
一个很好的入门资源是:http://www.regular-expressions.info/javascript.html
答案 1 :(得分:1)
您的正则表达式是正确的,但要执行任何类型的操作,您必须使用替换回调:
section = "abc";
reg = new RegExp("(\\["+section+"\\]\\[)(\\d+)(\\])","g");
num = duplicate.replace(reg,function(_,before,number,after) {
return before + (parseInt(number,10)+1) + after;
});
答案 2 :(得分:0)
我至少看到两个问题。
\
字符在JavaScript字符串中具有特殊含义。它用于转义字符串中的特殊字符。例如:\n
是new line
,\r
是carriage return
。您还可以转义引号和撇号以将它们包含在字符串中:"This isn't a normally \"quoted\" string... It has actual \" characters inside the string as well as delimiting it."
第二个问题是,为了使用反向引用($1
,$2
等),您必须在模式中提供capturing group
(正则表达式需要知道什么反向引用)。尝试将模式更改为:
'\\[' + section + '\\]\\[(\\d+)\\]'
请注意双反斜杠。这会转义反斜杠字符本身,使其成为字符串中的文字\
。另请注意使用(
和)
(捕获组)。这告诉正则表达式为$1
捕获的内容。
在使用section === 'abc'
:
new RegExp('\\[' + section + '\\]\\[(\\d+)\\]', 'g');
您的模式现在是:
/\[abc\]\[(\d+)\]/g
您的.replace
将返回\d+++
(其中\d+
是输入字符串中捕获的数字)。