我正在验证一个字段,该字段可能不是数字,但可能包含空格或减号。
这是用于验证电话号码字段! 因此,应该满足这些标准:(可能已经忘记了一个标准,如果是这样提醒我的话)
1- Atleast 5 numbers
2- May contain space
3- Not shorter than 5 characters
4- Not longer than 20 characters
5- May contain minus-sign
6- Not empty
if (nr.length>4 && nr.length<21 && nr!=''){
}
我应该如何编写正则表达式? 还是if语句?
由于
答案 0 :(得分:3)
试试这个正则表达式:
^(?=(?:\D*\d){5})[\d -]{5,20}$
前瞻断言(?=(?:\D*\d){5})
测试五位数。其余的测试长度至少为5个,最多20个字符,只能是数字,空格或连字符。
答案 1 :(得分:1)
nr != ''
条件是多余的,因为长度比较已经排除了零长度。
因此,通过长度比较,你看起来像是一个简单的数字,空格和短划线字符类:
/[\d\s-]{5,20}/
当然,这允许像-----或一堆空格这样的东西。所以也许你想首先删除不一个数字的所有内容,然后检查
/\d{5,20}/
这可能会更简单。