我需要将正则表达式中包含的组的条件相乘,此刻我只能理解完全相等,例如:
stringA = 'a-a';
stringB = 'a-z';
var r = (/([a-z])(\-\1)/g).test(str);
(r).test(stringA);//true
(r).test(stringB);//false, but i want true
我只想自动了解有[a-z]条件而不是条件[a],例如现在的条件。你能救我吗?
编辑:
stringC = 'The apples are 44-The apples are 44';
stringD = 'The apples are 44-The apples are 45';
var Nr = (The apples are [0-9]{2})(\-\1);
(Nr).test(stringC);//true
(Nr).test(stringD);//false, but i want true
又增加了1个例子。
答案 0 :(得分:1)
在您当前的正则表达式中,您在将一个单个字符放入组中后使用\1
,使其重复匹配该单个字符。解决方案是将\1
放在包含此条件a-z
的组之后,以便\1
重复匹配整个条件。
试试这个正则表达式:
([a-z]\-[a-z])(\1?)
答案 1 :(得分:0)
RegExp
对象可以动态构建:
var re = new RegExp( "(1)(-1)".replace(/1/g, "[a-z]") )
console.log( re )
console.log( re.test('a-z') )