乘以正则表达式中包含的组的条件

时间:2017-11-24 02:30:48

标签: javascript regex

我需要将正则表达式中包含的组的条件相乘,此刻我只能理解完全相等,例如:

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个例子。

2 个答案:

答案 0 :(得分:1)

在您当前的正则表达式中,您在将一个单个字符放入组中后使用\1,使其重复匹配该单个字符。解决方案是将\1放在包含此条件a-z的组之后,以便\1重复匹配整个条件。

试试这个正则表达式:

([a-z]\-[a-z])(\1?)

演示:https://regex101.com/r/GCgk5h/1/

答案 1 :(得分:0)

RegExp对象可以动态构建:

var re = new RegExp( "(1)(-1)".replace(/1/g, "[a-z]") )

console.log( re )
console.log( re.test('a-z') )