2015-04-01 73 views
0

我有这样的正则表达式:加入条件的正则表达式只匹配ASCII字符

(至少一个大写,一个downcase,一个数字,没有空间,LEN 8〜128)

我要添加新的条件:只有ASCII字符

目前我正在试图用:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(^\p{ASCII})\S{7,128}.+$/

这对于工程(不匹配):"çko#1!RtsdsWs"

但会匹配(因为ç,我不想匹配):"kço#1!RtsdsWs"

回答

1

在匹配每个非空格字符之前,使用积极的前瞻来检查ASCII字符。

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?:(?=\p{ASCII})\S){8,128}$ 

OR

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?:(?=[[:ascii:]])\S){8,128}$ 

DEMO

+0

好。如果我不想要空格? – 2015-04-01 03:11:08

+0

检查我的更新... – 2015-04-01 03:11:21

+1

工程就像一个魅力!谢谢!! – 2015-04-01 03:15:29