我有这个信息:
/([0123][0-9])-(\1)-(\d{4})/g
我的问题。为何选择'返回参考'不工作?我想了解语法的作用以及我在哪里犯了错误。因为根据我的理解,第一组([0123][0-9])
应该同时考虑数字' 10'和' 16'或不?为什么呢?
答案 0 :(得分:3)
反向引用仅匹配使用相应捕获组捕获的相同文本。它不会重复模式,而是重复已经捕获的值。
在您的情况下,\1
尝试在第一个16
之后匹配-
。
在JS正则表达式中,您不能使用可在PCRE / Onigmo中使用的(?1)
/ \g<1>
子例程调用,但您可以将子模式定义为变量并动态构建模式:
var target = "16-10-2017";
var p1 = "[0123][0-9]";
var rx = new RegExp("(" + p1 + ")-(" + p1 + ")-(\\d{4})", "g");
console.log(target.replace(rx, "$1/$2/$3"));
&#13;
答案 1 :(得分:2)
也许您必须将正则表达式更改为此(([0123][0-9])-){2}(\d{4})
,这意味着它应匹配两部分numbers
和[0123]
的{{1}}的两部分,后跟{{ 1}} [a-9]