正则表达式

正则表达式匹配一串数字,比如字符串“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"]

var str = '123,222,3333,444,555,666,777'; var reg = /(\d+,){3}[4]{3},(\d+){2}\d+/; alert(!reg.test(str))

[/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]
这个应该做不到!能做到,麻烦发出来,共同学习下。