首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript到Java Regex

Javascript到Java Regex
EN

Stack Overflow用户
提问于 2011-07-12 22:30:48
回答 3查看 713关注 0票数 1

我在Javascript中有以下正则表达式:

/^(\{?(08)([3-9]){1}-([0-9]){7,7}\}?)$/

它匹配的数字如下:

0.87-1234893,083-2839283,086-4283944等

我将其转换为Java (Android),如下所示:

代码语言:javascript
复制
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(原生方法)

我弄不清第三个怎么了?角色!我试着用'\‘来转义它,但是这不能编译。

有人能帮帮我吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-12 23:17:38

用这个:

代码语言:javascript
复制
Pattern.compile("^08[3-9]-([0-9]){7}$");

甚至:

代码语言:javascript
复制
Pattern.compile("08[3-9]-([0-9]){7}");
票数 1
EN

Stack Overflow用户

发布于 2011-07-12 22:33:26

逃离{,最有可能的是接近尾端的}

代码语言:javascript
复制
Pattern p = Pattern.compile("^(\\{?(08)([3-9]){1}-([0-9]){7,7}\\}?)$");

{字符是一个用于重复的特殊字符(例如,a{3,5}重复a 3-5次),需要在Java中转义。

票数 1
EN

Stack Overflow用户

发布于 2011-07-12 22:51:20

只需移除分隔符

对于javascript:

代码语言:javascript
复制
var  pattern = /^(\{?(08)([3-9]){1}-([0-9]){7,7}\}?)$/;

适用于Java:

代码语言:javascript
复制
string pattern = "^(\{?(08)([3-9]){1}-([0-9]){7,7}\}?)$"; 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6671994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档