我可以使这个Phone Validator Regex更有效吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我可以使这个Phone Validator Regex更有效吗?相关的知识,希望对你有一定的参考价值。

我几天前开始乱用Regex,今天我被要求制作一个快速的正则表达式。 (创建高效的正则表达式真的是一种艺术吗?)

所以我写了这个简单的正则表达式以匹配以色列电话号码:^05[23489]-?[\d]{3}-?[\d]{4}$但是它能完成在1或2秒内完成大约10,000个电话号码验证的工作吗?我这里没有电脑所以我无法查看。谢谢你的改进!

匹配规则是:

  • 从05开始,然后是0,2,3,4,8,9中的一个
  • 然后选择连字符
  • 然后是3位数
  • 那么可选' - '
  • 最终来4位数。

有效电话号码的几个示例:

  1. 052-587-6549
  2. 0531432941
  3. 058-3219321
  4. 059-321-1353
答案

[23489]不包括0。此外,用字符类括号\d = [\d]包装单个\d不是一个好主意。

使用

^05[023489]-?\d{3}-?\d{4}$
    ^

regex demo

在Java中,如果您使用带有^方法的模式,则不需要$.matches()锚点,因为它需要完整的字符串匹配。

if (phone.matches("05[023489]-?\\d{3}-?\\d{4}")) {
    // This is valid
}

以上是关于我可以使这个Phone Validator Regex更有效吗?的主要内容,如果未能解决你的问题,请参考以下文章

jsonp

vue-validator 使用详解

在 Laravel 4 中返回 Input::except() 多个输入

Qt正则表达式限制输入

用于验证美国电话号码格式的 RegEx

jquery正则常用的