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+/.\\-()”的字符串。因此,这将允许很大的自由度,例如“++++++”((((()将匹配。我认为您不需要在字符类中转义反斜杠或括号