我在Javascript中有以下正则表达式:
/^(\{?(08)([3-9]){1}-([0-9]){7,7}\}?)$/
它匹配的数字如下:
0.87-1234893,083-2839283,086-4283944等
我将其转换为Java (Android),如下所示:
public boolean isValidMobilePhone(String phone){
boolean returnObj=false;
Pattern p = Pattern.compile("^({?(08)([3-9]){1}-([0-9]){7,7}}?)$");
Matcher m = p.matcher(phone);
boolean matchFound = m.matches();
if (matchFound){
returnObj=true;
}
return returnObj;
}下面是我遇到的错误:
07-12 23:26:10.478: ERROR/AndroidRuntime(11464):java.util.regex.PatternSyntaxException:语法错误U_REGEX_RULE_SYNTAX近索引3: 07-12 23:26:10.478: ERROR/AndroidRuntime(11464):^({?(08)(3-9){1}-(0-9){7,7}}?)$ 07-1223:26:10.478: ERROR/AndroidRuntime(11464):^07-1223:26:26:10.478: ERROR/AndroidRuntime(11464):at com.ibm.icu4jni.regex.NativeRegEx.open(原生方法)
我弄不清第三个怎么了?角色!我试着用'\‘来转义它,但是这不能编译。
有人能帮帮我吗?
发布于 2011-07-12 23:17:38
用这个:
Pattern.compile("^08[3-9]-([0-9]){7}$");甚至:
Pattern.compile("08[3-9]-([0-9]){7}");发布于 2011-07-12 22:33:26
逃离{,最有可能的是接近尾端的}。
Pattern p = Pattern.compile("^(\\{?(08)([3-9]){1}-([0-9]){7,7}\\}?)$");{字符是一个用于重复的特殊字符(例如,a{3,5}重复a 3-5次),需要在Java中转义。
发布于 2011-07-12 22:51:20
只需移除分隔符
对于javascript:
var pattern = /^(\{?(08)([3-9]){1}-([0-9]){7,7}\}?)$/;适用于Java:
string pattern = "^(\{?(08)([3-9]){1}-([0-9]){7,7}\}?)$"; https://stackoverflow.com/questions/6671994
复制相似问题