JS Regex最后两位数匹配前两位数

时间:2016-04-15 21:54:11

标签: javascript regex

我是正则表达式的新手,所以请袒露我的愚蠢问题。

我一直试图让这个工作几个小时,我仍然无法让我工作,正如我想的那样。

我需要的是,我有4个号码,我需要最后2个号码,与前2个号码相同。
像这样会匹配:

1212  
1313  
1414 

另一方面,这不应该是匹配:

1513
1314
1236  

我似乎无法让它发挥作用,而且我对如何实际操作毫无头绪。
这是我到目前为止所得到的:

/^(?:(\d{2}))+$/g  

我可以得到一些帮助,继续前进吗?或者手指指向正确的方向,怎么做,或者在哪里查找,所以我可以找到自己的答案。
提前致谢

1 个答案:

答案 0 :(得分:2)

您可以使用

/^(\d{2})\1$/

用于4位数字符串。请参阅this regex demo



var good_strs = ["1212", "1313", "1414"];
var bad_strs = ["1513", "1314", "1236"];
var res_good = good_strs.map(x => /^(\d{2})\1$/.test(x));
document.body.innerHTML = "Good string test:<pre>" + JSON.stringify(res_good, 0, 4) + "</pre>";
var res_bad = bad_strs.map(x => /^(\d{2})\1$/.test(x));
document.body.innerHTML += "Bad string test:<pre>" + JSON.stringify(res_bad, 0, 4) + "</pre>";
&#13;
&#13;
&#13;

如果中间可以有任何字符,只需在其间插入[\s\S]*

/^(\d{2})[\s\S]*\1$/

请参阅another regex demo(仅用于演示的延迟匹配)。