我需要你的正则表达式的帮助。 这是我的要求,检查字符串是否以0937,937或63937开头。接下来检查字符串是否仅包含数字并检查0937 = 11,937 = 10,63937 = 12的字符长度。
到目前为止,这是我尝试过的:
class MyRegex {
static Pattern p1 = Pattern.compile("^0937[0-9]{11}+$");
static Pattern p2 = Pattern.compile("^937[0-9]+{10}$");
static Pattern p3 = Pattern.compile("^63937[0-9]{12}$");
public static void main(String []args){
String phone = "09375126435"; //"639375126439"; // "9375126435";
System.out.println(validateABSMobileNumber(phone));
}
public static boolean validateABSMobileNumber(String phone){
return p1.matcher(phone).matches() || p2.matcher(phone).matches() || p3.matcher(phone).matches() ;
}
}
示例测试用例:
09375126435 = true 0937512643 = false 639375126439 =真 63937512643 =假 9375126439 =真 937512643 = false
但它没有正确运行。任何想法如何解决这一问题?感谢。
答案 0 :(得分:1)
您的模式错误地计算了字符数。使用此:
static Pattern p1 = Pattern.compile("^0937[0-9]{7}$");
static Pattern p2 = Pattern.compile("^937[0-9]{7}$");
static Pattern p3 = Pattern.compile("^63937[0-9]{7}$");
答案 1 :(得分:0)
我认为你只能使用一种模式,如下所示:
static Pattern p = Pattern.compile("^((0937)|(937)|(63937))[0-9]{7}$");
这种模式包括你的三个正确长度的案例。因此,如果您可以使用维护正则表达式,我建议您使用属性文件。
我希望这些信息可以帮到你。
祝你好运。