我想在swing中验证电话号码字段,因此我正在编写代码以允许用户仅输入数字,逗号,空格。对于这个我使用正则表达式,当用户输入字符或模式文本字段将消耗。
我的代码无效。 谁能告诉我这是什么问题?
String s = c_phone.getText();
Pattern pattern = Pattern.compile("([0-9\\-\\(\\)\\,]+)");
Matcher m = pattern.matcher(s);
if((!m.matches())){
evt.consume();
}
提前致谢。
答案 0 :(得分:1)
要仅允许数字,逗号和空格,您需要删除(
,)
和-
。以下是使用Matcher.find()
:
Pattern pattern = Pattern.compile("^[0-9, ]+$");
...
if (!m.find()) {
evt.consume();
}
要允许空字符串,请将+
替换为*
:
Pattern pattern = Pattern.compile("^[0-9, ]*$");
答案 1 :(得分:0)
您的角色类包括数字,连字符,逗号和括号。
请注意,如果在字符类中正确放置,则不需要转义逗号和括号,也不需要转义连字符。
验证......
仅限数字,逗号,空格
"[0-9, ]+"
应该足够了。
答案 2 :(得分:0)
您可以使用以下内容,
String s = "203 555 0000";
String s1 = "203,550,0000";
String s2 = "2035500000";
Pattern pattern = Pattern.compile("\\d{3}[,\\s]?\\d{3}[,|\\s]?\\d{4}$");
Matcher m = pattern.matcher(s);
if(m.matches()){
//evt.consume();
System.out.println("Matches");
}
下面解释:
\d
匹配一个数字。{3}
是一个量词,在\ d之后,恰好匹配三位数。 |
(垂直条)表示交替,即给定的替代选择。 \s
- 匹配空间$
匹配一行的结尾。 您可以根据您的使用情况进一步增强它。