我在Javascript以下的正則表達式:的Javascript正則表達式爲Java正則表達式
/^(\{?(08)([3-9]){1}-([0-9]){7,7}\}?)$/
它匹配的數字,如:
087-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: Syntax error U_REGEX_RULE_SYNTAX near index 3: 07-12 23:26:10.478: ERROR/AndroidRuntime(11464): ^({?(08)([3-9]){1}-([0-9]){7,7}}?)$ 07-12 23:26:10.478: ERROR/AndroidRuntime(11464): ^07-12 23:26:10.478: ERROR/AndroidRuntime(11464): at com.ibm.icu4jni.regex.NativeRegEx.open(Native Method)
我想不出有什麼不對的第三個「?」字符!我試着用'\'轉義它,但那不會編譯。
任何人都可以幫我嗎?
這似乎有效!非常感謝。 – Eamorr
沒問題。下一次使用正則表達式時,您可能想要獲得正則表達式備忘單,也可以嘗試使用baregrep。 – Martin