java - Regex check to see if a String contains non digit fails -
why fail?
string n = "h107"; if (n.matches("\\d+")) { system.out.println("non digit in it"); }
i had night sleep on it, , still not it. got solution now:
if (n.matches(".*\\d+.*")) {
but in (maybe lack of knowledge) first 1 should match. cause if has match complete string, what's point of '^' character line beginning.
that recurring problem of .matches()
: misnamed. not regex matching. , problem other languages have fallen prey misnaming (python 1 example).
the problem try match whole input.
use pattern
, matcher
, .find()
instead (.find()
does real regex matching, ie find text matches anywhere in input):
private static final pattern nondigit = pattern.compile("\\d"); // in code if (nondigit.matcher(n).find()) // there non digit
you should in fact use pattern
; string
's .matches()
recompile pattern each time. pattern
compiled once.
Comments
Post a Comment