我是正则表达式的新手,所以请袒露我的愚蠢问题。
我一直试图让这个工作几个小时,我仍然无法让我工作,正如我想的那样。
我需要的是,我有4个号码,我需要最后2个号码,与前2个号码相同。
像这样会匹配:
1212
1313
1414
另一方面,这不应该是匹配:
1513
1314
1236
我似乎无法让它发挥作用,而且我对如何实际操作毫无头绪。
这是我到目前为止所得到的:
/^(?:(\d{2}))+$/g
我可以得到一些帮助,继续前进吗?或者手指指向正确的方向,怎么做,或者在哪里查找,所以我可以找到自己的答案。
提前致谢
答案 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;
如果中间可以有任何字符,只需在其间插入[\s\S]*
:
/^(\d{2})[\s\S]*\1$/
请参阅another regex demo(仅用于演示的延迟匹配)。