如何查看字符串以确保它只包含某些地方的数字?

时间:2015-09-30 05:27:04

标签: java regex string if-statement

我正在写一些内容,它会根据用户输入的电话号码,并根据五个参数告诉用户输入是否有效:

  1. 输入长度为13个字符
  2. 索引0处的
  3. char是'('
  4. 索引4的
  5. char是')'
  6. 索引8的
  7. char是' - '
  8. 所有其他字符必须是其中一个数字:'0'到'9'(含)。
  9. 到目前为止,除了第五个参数外,我已经完成所有工作。我的代码如下:

       if (number.contains("[0-9]+"))
        {
            ints = true;
    
            if (number.contains("[a-zA-Z]*\\d+."))
            {
                ints = false;
            }
        }
        else 
        {
            ints = false;
        }
    

    (旁注:数字是我的字符串,是用户的输入,而ints是代码中前面声明的布尔值。)

3 个答案:

答案 0 :(得分:2)

这是一个正则表达式。

    Pattern p = Pattern.compile("^\\(\\d{3}+\\)\\d{3}+-\\d{4}");
    System.out.println(p.matcher("(916)628-4563").matches());
    System.out.println(p.matcher("( 916 ) 628-4563").matches());

输出:

<强>真

输入这样的数据可能很困难,当接收用户输入时,您应该尝试限制他们的选项。例如。询问电话号码的每一部分,并省略(,)和 - 。

由于op增加了新的要求。首先检查所需的(,)和 - &#39; s。

boolean goodNumber = number.find("(")==0&&number.find(")")==4
goodNumber = goodNumber&&number.find("-")==8
goodNumber = goodNumber&&number.length()==13&&
goodNumber = goodNumber&&number.replaceAll("\\d","").length()==3;

找到括号,短划线,然后删除所有数字,看看你是否只留下括号和短划线。

答案 1 :(得分:1)

您可以使用以下内容。如果字符串正确,则会打印valid,否则会打印invalid

public void compare(){        
    String inputString="(123)848-3452";
    if(inputString.matches("^\\([0-9]{3}\\)[0-9]{3}-[0-9]{4}")){
        System.out.println("valid");
    }else{
        System.out.println("invalid");
    }
}

答案 2 :(得分:0)

你可以有一个像这样的简单正则表达式

Pattern pattern = Pattern.compile("\\(\\d{3}\\)\\d{3}\\-\\d{4}");
Matcher matcher = pattern.matcher("(071)234-2434");
System.out.println(matcher.matches());