我的来源
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");
- 必须是真的
怎么做?
答案 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}
(下限 - >上限)