摆动电话号码验证的正则表达式

时间:2015-06-22 12:26:25

标签: java regex

我想在swing中验证电话号码字段,因此我正在编写代码以允许用户仅输入数字,逗号,空格。对于这个我使用正则表达式,当用户输入字符或模式文本字段将消耗。

我的代码无效。 谁能告诉我这是什么问题?

String s = c_phone.getText();
    Pattern pattern = Pattern.compile("([0-9\\-\\(\\)\\,]+)");
    Matcher m = pattern.matcher(s);
    if((!m.matches())){
        evt.consume();
    }

提前致谢。

3 个答案:

答案 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 - 匹配空间
  • $匹配一行的结尾。

您可以根据您的使用情况进一步增强它。