正则表达式不匹配字母,数字和空格任意组合

这段时间要写一个正则验证用户输入的手机号,要求只要有数字,哪里有空格都给验证通过,但不能有字母,也不能为空,还不能只有空格没有数字。苦思冥想了好久,终于解决了,所以纪录一下,免得被自己差劲的正则搞死。

/ ^ (?! . * [a-zA-Z] ) \s * \d /
说明一下, 正则表达式中有(?=a)和(?!a)来表示我们是否需要匹配某个东西,所以不要字母,就是(?![a-zA-Z]),但是正则匹配总是要有个头或者尾的(不知道这样理解对不对),所以字母前面有任意东西也是应该可以让它通过的,所以--->用.*来表示字母之前可能有其他的字符,为什么还要加^呢,因为如果不加的话,可能匹配到字母之后的这个位置上了就会没有一个头或者尾。好的,到目前为止,/^(?!.*[a-zA-Z])/已经可以做到剔除字母了,但是不输入,或者只输入空格,都是可以通过的。那么在后面再加上,要有数字,和0到多个空格就可以了。所以得---> /^(?!.*[a-zA-Z]\s*\d)/

你可能感兴趣的:(IT技能)