[英]How can I use Pattern and Matcher with StringBuffer or char[] types instead of String?
我怎样才能使用这样的方法
private boolean respectPattern(String password) {
Pattern passwordPattern = Pattern.compile(
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[.@$!%*?&])[A-Za-z\\d@$!%*?&.]{8,}$",
Pattern.CASE_INSENSITIVE);
Matcher matcher = passwordPattern.matcher(password);
return matcher.find();
}
如果我用StringBuffer
或char[]
替换password
类型?
类java util.regex.Pattern
方法matcher()
接受一个类型为CharSequence的单个参数,它是一个接口。 根据javadoc ,有几个实现类,包括StringBuffer
。 如果现有的实现都不适合您的需要,您可以随时编写自己的实现。
例如,使用CharBuffer
CharBuffer cb = CharBuffer.allocate(11);
cb.put(new char[]{'S','e','c', 'r', 'e', 't', ' ', 'P', 'a', 's', 's'});
Pattern passwordPattern = Pattern.compile(
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[.@$!%*?&])[A-Za-z\\d@$!%*?&.]{8,}$",
Pattern.CASE_INSENSITIVE);
Matcher matcher = passwordPattern.matcher(cb);
如果我用 StringBuffer 或 char[] 替换密码类型?
如果用StringBuffer
替换密码类型:
按原样使用,即以下内容将成功编译并按预期工作:
private boolean respectPattern(StringBuffer password) {
Pattern passwordPattern = Pattern.compile(
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[.@$!%*?&])[A-Za-z\\d@$!%*?&.]{8,}$",
Pattern.CASE_INSENSITIVE);
Matcher matcher = passwordPattern.matcher(password);
return matcher.find();
}
如果用char[]
替换密码类型:
使用passwordPattern.matcher(String.valueOf(password));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.