我正在使用此正则表达式验证电话号码和电子邮件,但我收到 Perl 语法错误,任何人都可以帮助我在这里使用什么
^(?:(\d)(?!\1{2}))\d{4,15}$|([A-Za-z0-9]+@[A-za-z]+\.[A-Za-z]{2,3})
我正在验证 4-15 之间的国际号码,还验证连续重复的号码,例如
1111111111111
、99999999999
、77777777777
,我们不能使用超过 3 个重复号码,我也在验证电子邮件,一切都很好,但对于重复的数字我必须使用 Perl 语法?!这就是为什么我收到错误请帮我解决这个问题
你没有使用 Perl;你正在使用RE2。虽然与 Perl 类似,但它不太兼容。
具体来说,它无法处理您提供的模式。
这就是消息所说的内容。您需要提供 RE2 可以处理的东西。
相关部分如下:
^(?:(\d)(?!\1{2}))\d{4,15}$
在 Perl 中,它会检查 5-16 位数字的字符串,后面可以选择换行,但需要注意的是前三位数字不能相同。
这是等效的1并且将在RE2中工作:
^
(?: 0 (?: 0 [1-9] | [1-9] [0-9] )
| 1 (?: 1 [02-9] | [02-9] [0-9] )
| 2 (?: 2 [0-13-9] | [0-13-9] [0-9] )
| 3 (?: 3 [0-24-9] | [0-24-9] [0-9] )
| 4 (?: 4 [0-35-9] | [0-35-9] [0-9] )
| 5 (?: 5 [0-46-9] | [0-46-9] [0-9] )
| 6 (?: 6 [0-57-9] | [0-57-9] [0-9] )
| 7 (?: 7 [0-68-9] | [0-68-9] [0-9] )
| 8 (?: 8 [0-79] | [0-79] [0-9] )
| 9 (?: 9 [0-8] | [0-8] [0-9] )
)
[0-9]{2,13}
\n?
\z
我不知道RE2,所以可能有更好的解决方案。
\d
旨在匹配 [0-9]
。它实际上更匹配。