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

问题描述 投票:-1回答:1

我几天前开始乱用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
java regex
1个回答
0
投票

[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
}
© www.soinside.com 2019 - 2024. All rights reserved.