首页 > 解决方案 > 正则表达式模式匹配器失败

问题描述

我想知道为什么下面的正则表达式模式匹配器失败。

我已经包含?A-Za-z0-9了字符和数字

System.out.print(Pattern.compile("[?A-Za-z0-9]").matcher("aa22Aa?").matches());

标签: javaregex

解决方案


?A-Za-z0-9只会匹配集合中定义的特定字符的一次出现

您需要+在模式中添加量词,以便一个或多个字符匹配

[?A-Za-z0-9]+

您可以使用类的函数来编译模式并将其与字符串匹配,而不是调用.compile()函数来编译模式然后调用.matcher()函数来创建一个。Matcher.matches()Pattern

System.out.print(Pattern.matches("[?A-Za-z0-9]+", "aa22Aa?"));

编辑:

正如@Andreas 正确指出的那样,您还可以使用类.matches()的功能String

System.out.print("aa22Aa?".matches("[?A-Za-z0-9]+"));

推荐阅读