如何检查用户输入的字符串是否与特定格式匹配?

时间:2014-04-03 10:58:48

标签: java regex validation

我正在编写一个程序来检查用户输入的字符串是否是有效的电话号码。有效数字的唯一限定符合格式“ddd-ddd-dddd”,其中每个d是一个数字。如何检查字符串是否与此格式匹配?

5 个答案:

答案 0 :(得分:2)

您应该使用正则表达式。下面是几行有用的代码。

  String sPhoneNumber1 = "605-888-9999";
  String sPhoneNumber2 = "605-888-9991";
  //String sPhoneNumber3 = "605-8838-9993";

  Pattern pattern = Pattern.compile("\\d{3}-\\d{3}-\\d{3}");
  Matcher matcher = pattern.matcher(sPhoneNumber);

  if (matcher.matches()) {
      System.out.println("Phone Number Valid");
  }
  else
  {
      System.out.println("Phone Number must be in the form XXX-XXXXXXX");
  }

答案 1 :(得分:0)

String whatUserEntered = "1223-123-1234";
System.out.println(Pattern.matches("\\d\\d\\d-\\d\\d\\d-\\d\\d\\d\\d", whatUserEntered));

答案 2 :(得分:0)

String s = "123-345-6789";
if(!s.matches("^\\d{3}-\\d{3}-\\d{4}$"))
{
    System.out.println("This is not a valid phone number");
}
else
{
    System.out.println("This is a valid phone number");
}

这是一个学习正则表达式的好网站: http://regexone.com/

答案 3 :(得分:0)

您可以使用正则表达式来匹配它。与之匹配的最简单的正则表达式是:

/[0-9]{3}-[0-9]{3}-[0-9]{4}/

您也可以使用:

/\d{3}-\d{3}-\d{4}/

<强>使用Javascript:

var test = '111-222-3333';
var regex = /\d{3}-\d{3}-\d{4}/g;
console.log(test.match(regex));

预期输出:

["111-222-3333"]

Wiki有很好的学习正则表达式的来源: http://en.wikipedia.org/wiki/Regular_expression

还有很多在线资源。

编辑:错过了Java要求 来自Java 7文档: http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();

将其应用于上述:

Pattern p = Pattern.compile("\\d{3}-\\d{3}-\\d{4}");
Matcher m = p.matcher("111-222-3333");
boolean b = m.matches();

if (b) {
System.out.println("Matches!");
} else {
System.out.println("Doesn't match!");
}

在Java中使用字符串文字时,请记住转义()反斜杠。

答案 4 :(得分:0)

我对java不太好,但如果我没记错的话,

在java中验证字符串如下所示:

if(cellnum.matches(\\d{3}-\\d{3}-\\d{4})
{//this is valid}