java正则表达式匹配0-9和一些特殊字符
我在为电话号码编写正则表达式时遇到了一些问题。(还不太擅长) 数字只能包含:java正则表达式匹配0-9和一些特殊字符,java,regex,Java,Regex,我在为电话号码编写正则表达式时遇到了一些问题。(还不太擅长) 数字只能包含:0-9、+、/、-、(,) 我在想: @Pattern(regexp = "(0-9+/\\.\\- \\(\\))?") 但当我刚输入100时,这已经引起了我的不满。试试这个正则表达式[0-9\-\s+\/()]+ 但是根据你的解释,我的正则表达式也允许++或者一个空格或者类似的东西,这就是你想要的吗 编辑:所以最好使用以下命令:([\.\-\s+\/()]*[0-9][\.\-\s+\/()]*){8,15} 它至
0-9、+、/、-、(,)
我在想:
@Pattern(regexp = "(0-9+/\\.\\- \\(\\))?")
但当我刚输入100时,这已经引起了我的不满。试试这个正则表达式
[0-9\-\s+\/()]+
但是根据你的解释,我的正则表达式也允许++
或者一个空格或者类似的东西,这就是你想要的吗
编辑:所以最好使用以下命令:([\.\-\s+\/()]*[0-9][\.\-\s+\/()]*){8,15}
它至少需要8-15个数字,并允许其他字符出现在它们之间。您需要使用方括号创建一个字符类
[0-9+/. ()-]+
看
这意味着将类中的任何字符匹配一次或多次(因为末尾的量词+
)
但这将匹配任何顺序中的字符,例如“…”将匹配
您的正则表达式(0-9+/\\.\-\\\(\\)?
的行为方式如下:
匹配“0-”,然后是一个9的序列,后跟“/-()”。由于周围括号后面有?
,因此整个模式是可选的,即它也将匹配空字符串
请参见我认为您需要
“[-0-9+/.()]+”
-特殊字符在[]
中的处理方式不同,处理-
的最佳方法是将其放在第一位。正确的模式:^[\d\/\(\)\-\]+$
@Pattern(regexp = "^[0-9+/. ()-]+$")
通过拆分正则表达式,您可以看到:
^ #Won't match if it doesn't start at the beginning
[ #The character can contain...
\d #digits
\/ #slash
\( #brackets (open)
\) #brackets (close)
\- #hyphen
#space (\s is also possible but can be tab too)
\. #or a dot
]
+ #The character can be repeated
$ #Won't match if it doesn't reach the end
不是我想要的,而是我需要的。我们的网页设计师有点太喜欢让我们的用户有很多自由,并相信他们会善意地输入准确的数据。@SureshSankar这将匹配任何只包含字符“0-9+/.\\-()”的字符串。因此,这将允许很大的自由度,例如“++++++”((((()将匹配。我认为您不需要在字符类中转义反斜杠或括号