[英]Java regex check if certain characters match pattern
我需要您的正则表达式帮助。 这是我的要求,请检查字符串是否以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 =真0937512643 =真639375126439 =真63937512643 =真9375126439 =真937512643 =真
但是它不能正常运行。 任何想法如何解决这一问题? 谢谢。
您的模式错误地计算了字符。 用这个:
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}$");
我认为您只能使用一种模式,如下所示:
static Pattern p = Pattern.compile("^((0937)|(937)|(63937))[0-9]{7}$");
此模式包括长度正确的三个案例。 因此,如果您可以拥有一个主表正则表达式,建议您使用属性文件。
希望这些信息对您有所帮助。
祝好运。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.