matches
пытается сопоставить выражение со всей строкой и неявно добавить ^
в начале и $
в конце вашего шаблона, то есть не будет искать подстроку. Следовательно, выход этого кода:
public static void main(String[] args) throws ParseException {
Pattern p = Pattern.compile("\\d\\d\\d");
Matcher m = p.matcher("a123b");
System.out.println(m.find());
System.out.println(m.matches());
p = Pattern.compile("^\\d\\d\\d$");
m = p.matcher("123");
System.out.println(m.find());
System.out.println(m.matches());
}
/* output:
true
false
true
true
*/
123
является подстрокой a123b
, поэтому метод find()
выводит true. matches()
только «видит» a123b
, который не совпадает с 123
и, следовательно, выводит false.
также:
function hasLowerCase(str) {
return (/[a-z]/.test(str));
}
function hasLowerCase(str) {
return str.toUpperCase() != str;
}
или
function hasLowerCase(str) {
for(x=0;x<str.length;x++)
if(str.charAt(x) >= 'a' && str.charAt(x) <= 'z')
return true;
return false;
}
function hasLowerCase(str) {
return str.toUpperCase() != str;
}
alert(hasLowerCase("HeLLO"));
alert(hasLowerCase("HELLO"));
Попробуйте: http://jsfiddle.net/B2bvY/3/