需求如下,有一字符串str,写正则表达式,必须满足如下条件:
1,不能为空字符串
2,必须是整数
3,不能以0开头
4,0-9中每个数字,只能出现一次。即0-9这十个数每个数只能出现一次,1265是可以的,1125667就不行了,1出现了2次,6也出现了两次1,2,3条件很容易写,不过条件4想了很久未果,求高手教下这个正则表达式如何写
1,不能为空字符串
2,必须是整数
3,不能以0开头
4,0-9中每个数字,只能出现一次。即0-9这十个数每个数只能出现一次,1265是可以的,1125667就不行了,1出现了2次,6也出现了两次1,2,3条件很容易写,不过条件4想了很久未果,求高手教下这个正则表达式如何写
^(?!0)(?:([0-9])(?!.*?\1))+$
学习<script>
var reg = /^(?!0)(?:([0-9])(?!.*?\1))+$/;
var s = "12304567891";
alert(reg.test(s)); </script>
2楼muxrwc完全正确!<script id="begin">
var str=["0",""," ",
"1230416",
"adddff0255",
"123.56",
"12345",
"0123",
"112345",
"124504",
"123456789",
"1234567890",
"1234967890",
"0123456789",
"12345678901",
"1"];
//两种表达式异曲同工:
var exp2=/^(?!0)(?:([0-9])(?!.*?\1))+$/;
var exp3=/^(?=[1-9])(?:([0-9])(?!.*?\1)){1,10}$/;
for(i in str){
document.write("<li>"+i+": "+str[i]+" : "+(str[i].match(exp2)?true:null)+" : "+(str[i].match(exp3)?true:null));
}
</script>
/^(?!0)(?:([0-9])(?!.*?\1))+$/;
的具体意思么?
?:
?!.*?\1
都是什么意思?我的正则表达式的书里没教这么深.网上的资料也没讲这么深.
或者介绍一本书或资料吧。
\d有unicode兼容问题...不建议使用...{1,10},这个没意义.而且在IE里还有可能有和预查冲突的BUG.
因为不重复的肯定是<=10位的.就是那个意思\1是反向引用.
相当于$1
只不过是用在式子里面...(?!.*?\1)
就是后面不允许有和当前相同的字符...
var regex1=/^(?!0)(?:([0-9])(?![0-9]*?\1))+$/g;
这个可以
出 版 社: 电子工业出版社当当网的地址:http://product.dangdang.com/product.aspx?product_id=20028613
var oReg1=/^\d+$/
var oReg2=/(\d).*?\1/;
var sInput="012340";
alert(oReg1.test(sInput)&&!oReg2.test(sInput));