正则表达式匹配一串数字,比如字符串“123,222,3333,457,555,666,777”在这一串字符串中有7个数字,如果不能出现444,比如
“123,222,3333,XXX,555,666,777”,只要这个XXX不是457就验证通过,这样的正则表达式应该怎么写?
这次绝对可以了,一次搞定:
[code="java"]
var str = '123,212,3333,453,555,666,777';
var reg = /(\d+,){3}\b((?!457)\d){3}\b,(\d+,){2}\d+/;
alert(reg.test(str))
[/code]
反向思考,匹配444的字符串,如果匹配的到,那就反向验证,表示不通过。
[code="java"]
[/code]
"[0-3,5-9]+"
[code="javacript"]
var str = '123,212,3333,457,555,666,777';
var reg = /(\d+,){3}457,(\d+){2}\d+/;
alert(reg.test(str))
[/code]
先给个半成品吧 目前还不能验证 457457[code="java"] public static void main(String[] args) {
String str[] = { "457,", "457,123421,32134", "134,457", "da,457",
"da,457,", ",457,", "4 5 7", "457,457", "457457" };
String pt = "([0-9,]*)(457){1}([,0-9]*)";
for (String st : str) {
System.out.println("'" + st + "'" + " match " + pt + " = "
+ st.matches(pt));
}
}[/code]
[quote]先给个半成品吧 目前还不能验证 457457
Java代码
public static void main(String[] args) {
String str[] = { "457,", "457,123421,32134", "134,457", "da,457",
"da,457,", ",457,", "4 5 7", "457,457", "457457" };
String pt = "([0-9,]*)(457){1}([,0-9]*)";
for (String st : str) {
System.out.println("'" + st + "'" + " match " + pt + " = "
+ st.matches(pt));
}
}
[/quote]
结果
[quote]'457,'.match ([0-9,]*)(457){1}([,0-9]*) = true
'457,123421,32134'.match ([0-9,]*)(457){1}([,0-9]*) = true
'134,457'.match ([0-9,]*)(457){1}([,0-9]*) = true
'da,457'.match ([0-9,]*)(457){1}([,0-9]*) = false
'da,457,'.match ([0-9,]*)(457){1}([,0-9]*) = false
',457,'.match ([0-9,]*)(457){1}([,0-9]*) = true
'4 5 7'.match ([0-9,]*)(457){1}([,0-9]*) = false
'457,457'.match ([0-9,]*)(457){1}([,0-9]*) = true
'457457'.match ([0-9,]*)(457){1}([,0-9]*) = true[/quote]
[quote]不能反向验证,就给这么一个字符串,如果字符串里边不包含457则通过正则表达式验证,输出给定的字符串,否则输出为空!
[/quote]
这个应该做不到!能做到,麻烦发出来,共同学习下。