我正在使用正则表达式模式来验证输入,但是我不确定如何包括()和-符号。

描述:
输入字符串不必填写。如果填写完毕,则必须有5个数字,并且输入不能以26开头。此外,输入必须接受括号和破折号,并且可以将其放置在输入的任何部分。我最多接受10个字符

尝试过:

(^(?!26)((\d){5}))?


仅适用于:
-空输入
-十位数字,例如0123456789
-同样会拒绝您开头是否有26,例如2651234567

另外,尝试包含-和(),但此模式根本不起作用

(^(?!26)(\-\(\))((\d){5}))?

Valid inputs:
(12345)--
---12)567)
12333
-1-2--3-45
(()))12345
((12345
(-)65768-
(4)1-2-35

Invalid inputs:
26123---
(26)897---
-26333----
26
26(((())
26------
26--345
26)88-76
267-9


我发现讨论A comprehensive regex for phone number validation并有所帮助,但我仍然无法完全匹配我的输入。

最佳答案

您正在使用Java风格的正则表达式。正确的正则表达式模式为:

^(?!26)([-()]*\d){5}[-()]*$

这将使您输入的内容不能以26开头。但是,您的帖子未指定是否可能是--2)6-218(它不是以26开头,但是前两位数字是26)。如果是这种情况,那么您将需要:

^(?![-()]*2[-()]*6)([-()]*\d){5}[-()]*$

最多10个字符应在输入maxlength=10上验证。

编辑:正如@ zx81所指出的,我有一些不必要的转义。我不知道我在想什么,对不起。但是,此正则表达式模式不接受空字符串。

关于java - 如何设计数字的正则表达式模式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24225391/

10-12 23:48