合规性验证(正则表达式)

时间:2013-04-11 08:25:32

标签: java regex

我的来源

Matcher matcher = Pattern.compile("[0-9]").matcher("35423523");

matcher.matches() - 现在是假的

但我需要matcher.matches() - true - 因为字符串是所有数字

或者例如

Pattern.compile("[0-9A-Za-z]").matcher("35dwedwfeASADdfd423523"); - 必须是真的

Pattern.compile("[0-9]").matcher("354ccwq23523"); - 必须是假的 或Pattern.compile("[0-9a-z]").matcher("354ccwq23523"); - 必须是真的

怎么做?

3 个答案:

答案 0 :(得分:5)

你的正则表达式说字符串只能是一个字符宽,如果你想要更多,你应该使用repetition。然后它看起来像这样:[0-9]+[0-9A-Za-z]+

答案 1 :(得分:2)

matches()方法检查the entire region against the pattern。这意味着您的模式需要匹配整个字符串:

Matcher matcher = Pattern.compile("[0-9]+").matcher("35423523");

Pattern.compile("[0-9A-Za-z]+").matcher("35dwedwfeASADdfd423523");

来自javadocs:

  

返回true:if且仅当整个区域序列与此匹配器的模式匹配时

答案 2 :(得分:2)

Pattern.compile("[0-9]+").matcher("35423523"); 

<强> TRUE

Pattern.compile("[0-9A-Za-z]+").matcher("35dwedwfeASADdfd423523");

<强> TRUE

Pattern.compile("[0-9]+").matcher("354ccwq23523");

<强> FALSE

Pattern.compile("[0-9a-z]+").matcher("354ccwq23523");

<强> TRUE

如果您想匹配特定长度,可以使用[0-9]{1, 4}(下限 - >上限)