Java Regex定义两个允许的字符/数字列表

Java Regex定义两个允许的字符/数字列表,java,javascript,regex,validation,logic,Java,Javascript,Regex,Validation,Logic,我正在处理一个电话号码regex,这是我到目前为止得到的:^[0-9~+]{8,20}$ 它允许0到9之间的数字,也允许“+”和空格。范围必须在8到20之间。这个很好用 我想进一步得到的是只包含8到20个数字,其中“+”和空格是分开的 类似这样的内容:^[+]\d{8,20}$ 建议?如何: ^(?:[+ ]*\d){8,20}$ 这将匹配8到20位数字,前面是否有+或空格 如果+只能在开头: ^[+]?(?:[ ]*\d){8,20}$ 你的^[+]\d{8,20}$方法有什么问题?你的意

我正在处理一个电话号码regex,这是我到目前为止得到的:
^[0-9~+]{8,20}$

它允许0到9之间的数字,也允许“+”和空格。范围必须在8到20之间。这个很好用

我想进一步得到的是只包含8到20个数字,其中“+”和空格是分开的

类似这样的内容:
^[+]\d{8,20}$

建议?

如何:

^(?:[+ ]*\d){8,20}$
这将匹配8到20位数字,前面是否有
+
或空格

如果
+
只能在开头:

^[+]?(?:[ ]*\d){8,20}$

你的
^[+]\d{8,20}$
方法有什么问题?你的意思是空格可以在任何地方还是正好在数字前面?@gtgaxiola anywhere。可以用来分割数字。我会将
+
移到外面,否则它将在
+123+123
上匹配。类似于:
^\+?(?:[\s]*\d){8,20}$
@gtgaxiola:可能是,但要求不是很明确。不过,我已经编辑了答案。明白了。。。忘记了使用括号时不必转义
[+]
太好了:)我将在周一测试它