正规用于手机

Abd*_*him 1 java regex validation jsf

我想使用Validators验证一些JSF的字段.我正在寻找一种模式来验证只接受以下条件的手机号码:

1-可以在开头包含一个可选的'+'(并且在开头的'+'之后不应该有空格).

2-这个数字可能包含一到几个字符:

  • 数字字符[0-9]
  • 连字符( - )
  • 空间
  • 点(.)

我正在使用这种模式,(^\\+)?[0-9\\s-\\.]*但它不起作用,特别是我无法意识到这种情况"从开头'+'之后应该没有空间"

我的代码:

public Boolean isValid(String str) throws PatternSyntaxException {

        Pattern pattern = Pattern.compile("(^\\+)?[0-9\\s-\\.]*");
        Matcher matcher = pattern.matcher(telFax);
        boolean result = matcher.matches();

    return result;
}
Run Code Online (Sandbox Code Playgroud)

YCF*_*F_L 5

让我们一块一块地阅读你的问题:

可以在开头包含一个可选的"+"(并且在开头的'+'之后不应该有空格).

^\+?\S
Run Code Online (Sandbox Code Playgroud)

然后,该数字可能包含一到几个字符:

  • 数字字符[0-9]
  • 连字符( - )
  • 空间
  • 点(.)

你的最终正则表达式应如下所示:

^\+?[0-9-\.][0-9\s-\.]*
Run Code Online (Sandbox Code Playgroud)

检查正则表达式演示


您的Java代码可能如下所示:

public Boolean isValid(String telFax) {
    String regex = "^\\+?[0-9-\\.][0-9\\s-\\.]*";
    return Pattern.compile(regex).matcher(telFax).matches();
}
Run Code Online (Sandbox Code Playgroud)