正则表达式匹配两个不同的数字。
如题。语言是js。细节是输入一个2位数,要求匹配两个数字不同的情况。
我是打算这么做的。
var regExp1 = /^(\d{1})[^\1]$/;
var regExp2 = /^\d{2}$/;
if(regExp2.test(elem) == false){
alert("请输入一个2位数!");
document.getElementById("txt1").select();
}else {
if (regExp1.test(elem) == false){
alert("您输入的格式不正确!");
document.getElementById("txt1").select();
}
}
但是用[^\1]是失败的,因为不管是22还是23都能匹配上。
然后我去看了mdn的资料想用
var regExp1 = /^(\d{1})(?!\1)$/;
这样也还是失败,无论22还是23都不能匹配上。
请问我应该怎么做?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
思路应该反过来,匹配两个数字相同的情况
补充:
我想了一下觉得可以用负向前瞻零宽断言来实现:
如何用正则匹配一个6位数,前两位数字相同,后两位数字相同,中间两位不同
参考这里
楼上答案都OK。
我想这么做,
题主后续的zhui追问我可能不懂。谢谢。
采用暴力方式
哈哈
正解
时隔5年再来问下各位大佬?,负向前瞻零宽断言我明白了,正确答案是
/^(\d)(?!\1)\d$/
,但是为什么/^(\d{1})[^\1]$/
这个表达式不能满足要求呢