繁体   English   中英

如何编写此正则表达式?

[英]How to write this regexp?

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

这是用于验证电话号码字段! 因此,应该满足以下条件:(可能忘记了条件,请提醒我)

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

谢谢

试试这个正则表达式:

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

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

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

因此,在不进行长度比较的情况下,您似乎只能使用数字,空格和破折号的简单字符类了:

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

当然,这允许类似-----或一堆空格的事情。 因此,也许您想先删除所有不是数字的内容,然后再检查

/\d{5,20}/

这可能会更简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM