首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >包含0和4-9(4 ,5,6,7,8,9)的字符串的RegExp模式

包含0和4-9(4 ,5,6,7,8,9)的字符串的RegExp模式
EN

Stack Overflow用户
提问于 2018-10-15 16:28:27
回答 3查看 56关注 0票数 1

我在处理一条绳子。用例是我不想要一个数字为4到9和0的字符串。

例子:-

代码语言:javascript
运行
复制
ABC0123-> Not Valid.
XYZ002456789->Not Valid.
ABC123->Valid
ABC1->Valid

我试过下面的模式,但没有成功。

代码语言:javascript
运行
复制
String pattern = "^[0,4-9]+$"; 
if(str.matches(pattern)){
      //do something.
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-15 16:31:23

首先,从字符类中删除逗号。你不是在找逗号。

由于您不允许,不要锚定表达式,允许匹配在字符串中的任何位置。实际上,matches为您锚定表达式,因此我们必须在不允许的字符类之前和之后故意允许字符:

代码语言:javascript
运行
复制
String pattern = ".*[04-9].*";
if(str.matches(pattern)){
      // disallow
}

实例化

或者,您可以通过使用.*,然后使用生成的Pattern而不是matches来避免将这些Pattern放在其中,因为它不会像matches那样自动锚定模式。

票数 2
EN

Stack Overflow用户

发布于 2018-10-15 16:33:00

匹配包含4-9和0的正则表达式比不匹配包含4-9和0的正则表达式容易得多。

代码语言:javascript
运行
复制
[4-90]

然后调用find,然后反转结果:

代码语言:javascript
运行
复制
if (!Pattern.compile("[4-90]").matcher(someString).find()) {
    // ...
}
票数 1
EN

Stack Overflow用户

发布于 2018-10-15 19:03:11

另一个选项可以是使用一个否定的字符类并添加您不想匹配的内容。在这种情况下,您可以添加0和范围为4-9,如果不想匹配回车或换行符,也可以添加它们。

^[^04-9\\r\\n]+$

请注意,如果将逗号添加到字符类中,它就意味着一个逗号。

Regex演示 x- Java演示

代码语言:javascript
运行
复制
String pattern = "^[^04-9\\r\\n]+$";
if(str.matches(pattern)){
    //do something.
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52821016

复制
相关文章

相似问题

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