Regex Javascript电话号码验证最小-最大长度检查
Regex Javascript Phone number validation min max length check
我想要一个非常简单的Regex,用于Javascript验证电话号码,它允许10 digits
并检查包括- dash two times
在内的min numbers should be 10 and max 12
,例如123-123-1234
我在网上找到了一些,但没有一个为min / max length
工作。
期待这里的快速反应。
谢谢!
你可以做这个
/^(?!.*-.*-.*-)(?=(?:'d{8,10}$)|(?:(?=.{9,11}$)[^-]*-[^-]*$)|(?:(?=.{10,12}$)[^-]*-[^-]*-[^-]*$) )['d-]+$/
在Regexr 上查看
(?!...)
是否定的前瞻断言
(?=...)
是正向前瞻断言
^ # Start of the string
(?!.*-.*-.*-) # Fails if there are more than 2 dashes
(?=(?:'d{8,10}$) # if only digits to the end, then length 8 to 10
|(?:(?=.{9,11}$)[^-]*-[^-]*$) # if one dash, then length from 9 to 11
|(?:(?=.{10,12}$)
[^-]*-[^-]*-[^-]*$ # if two dashes, then length from 10 to 12
)
)
['d-]+ # match digits and dashes (your rules are done by the assertions)
$ # the end of the string
您要的不是一个简单的正则表达式,也可以在不使用'em的情况下解决。
function isPhoneNumberValid(number){
var parts, len = (
parts = /^'d['d-]+'d$/g.test(number) && number.split('-'),
parts.length==3 && parts.join('').length
);
return (len>=10 && len<=12)
}
当然,这可能比使用编译后的正则表达式慢一点,但如果你不打算以这种方式检查数十万个电话号码,那么开销就很小了。
这在任何方面都不完美,但可能符合您的需求,但请注意,这允许在除数字开头和结尾之外的任何位置使用两个破折号,因此这将为类似111--123123
的字符串返回true
。
使用regexp没有简单的方法可以做到这一点,尤其是如果允许破折号出现在某些不同的点上。
如果像您的例子中那样只允许在某些地方使用破折号,那么它将是^'d{3}-?'d{3}-?'d{4}$
这个:^['d-]{10,12}$
匹配长度从10到12的字符串,并且只包含数字和破折号,但它也将匹配例如-1234567890-
。
相关文章:
- PhantomJS - 检查javascript函数是否正在运行的任何方法
- 如何远程检查JavaScript应用程序的函数调用堆栈
- 如何检查Javascript何时完成
- 检查 javascript lib 是否已经存在
- 有没有一种方法可以检查javascript以毫秒为单位执行一个函数需要多长时间
- 检查JavaScript中的单选按钮
- 正在检查JavaScript中是否存在关联数组
- 检查JavaScript中的日期时间是否相等时出现错误结果
- 检查Javascript是否包含某种方法
- 正在检查Javascript中的干扰时间跨度
- 检查javascript中的文本框是否为空
- 依赖对象类型检查Javascript似乎是多余的
- 通过ajax运行php页面时,请检查javascript中单击了哪个按钮
- 如何检查 JavaScript 文件中正在使用哪个 HTML
- 如何检查 javascript 函数及其参数
- 如何检查 JavaScript 对象是否为 JSON
- 如何在Selenium脚本中检查JavaScript变量
- 检查 javascript 数组是否不仅包含空值
- 如何检查 JavaScript 数组中是否存在项
- 如何检查 JavaScript 对象中是否存在值,以便不加倍