如何写这个正则表达式?

时间:2010-02-19 17:42:14

标签: javascript html forms validation

我正在验证一个字段,该字段可能不是数字,但可能包含空格或减号。

这是用于验证电话号码字段! 因此,应该满足这些标准:(可能已经忘记了一个标准,如果是这样提醒我的话)

 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语句?

由于

2 个答案:

答案 0 :(得分:3)

试试这个正则表达式:

^(?=(?:\D*\d){5})[\d -]{5,20}$

前瞻断言(?=(?:\D*\d){5})测试五位数。其余的测试长度至少为5个,最多20个字符,只能是数字,空格或连字符。

答案 1 :(得分:1)

nr != ''条件是多余的,因为长度比较已经排除了零长度。

因此,通过长度比较,你看起来像是一个简单的数字,空格和短划线字符类:

/[\d\s-]{5,20}/

当然,这允许像-----或一堆空格这样的东西。所以也许你想首先删除一个数字的所有内容,然后检查

/\d{5,20}/

这可能会更简单。