首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android regex模式未闭字符错误

Android regex模式未闭字符错误
EN

Stack Overflow用户
提问于 2016-09-01 07:01:13
回答 2查看 173关注 0票数 0

我有以下命令:

代码语言:javascript
复制
String regexContact = "^([0|\\+[0-9]{1,5})?([7-9][0-9]{9})$";

Android在regex的末尾指出了错误,并说:

未闭字符类。

我已经筛选过类似的问题,但在我的情况下找不到这个错误的答案。我无法确定我的正则表达式本身是否在某个地方错了。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-01 07:04:13

代码语言:javascript
复制
^([0|\+[0-9]{1,5})?([7-9][0-9]{9})$
 ^↑    ^___^     ^ ^^___^^___^   ^
 |_______________| |_____________|

第一个[没有关闭,如果您想要匹配它,您应该转义它:\\[,否则您应该用相应的]关闭它。

票数 1
EN

Stack Overflow用户

发布于 2016-09-01 07:16:32

在Java风格中,[]符号应该在字符类中转义,以表示文字符号。

您有[0|\\+[0-9],其中[没有转义,并且被认为是字符类的起点,使得第一个[不成对,因此出现了错误。

您需要删除第一个[

代码语言:javascript
复制
String pat = "^(0|\\+[0-9]{1,5})?([7-9][0-9]{9})$";
               ^^

为了匹配:

  • ^ -字符串的开始
  • (0|\\+[0-9]{1,5})? -匹配1或0次的可选组
    • 0 -零
    • | -或
    • \+[0-9]{1,5} -加号和任意1到5位数字

  • ([7-9][0-9]{9}) -第2组匹配789,然后匹配任意九位数字(这里的括号可以删除)
  • $ -直到字符串的末尾.

regex演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39264696

复制
相关文章

相似问题

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