1

我的来源

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");- 必须为真

怎么做 ?

4

3 回答 3

5

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

于 2013-04-11T08:29:17.680 回答
2

matches()方法根据模式检查整个区域。这意味着您的模式需要匹配整个字符串:

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

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

从javadocs:

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

于 2013-04-11T08:30:46.643 回答
2
Pattern.compile("[0-9]+").matcher("35423523"); 

真的

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

真的

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

错误的

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

真的

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

于 2013-04-11T08:32:01.973 回答