【问题标题】:How to write this regexp?如何编写这个正则表达式?
【发布时间】:2010-02-19 17:42:14
【问题描述】:

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

这是用于验证电话号码字段! 所以,应该满足这些条件:(可能忘记了一个条件,如果有的话提醒我)

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

谢谢

【问题讨论】:

    标签: javascript html forms validation


    【解决方案1】:

    试试这个正则表达式:

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

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

    【讨论】:

    • 你没有漏掉减号吗?
    【解决方案2】:

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

    因此,通过长度比较,您看起来就像是一个简单的数字、空格和破折号字符类:

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

    当然,这允许诸如 ----- 或一堆空格之类的东西。所以也许你想先删除所有不是数字的东西,然后检查

    /\d{5,20}/
    

    这可能会更简单。

    【讨论】:

    • +1 击败我。我也正要返回! :)
    猜你喜欢
    • 2017-11-06
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    相关资源
    最近更新 更多