我正在使用正则表达式模式来验证输入,但是我不确定如何包括()和-符号。
描述:
输入字符串不必填写。如果填写完毕,则必须有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/