我遇到了正则表达式总是返回 false 的问题,尽管 “http://developer.android.com/reference/java/util/regex/Pattern.html”指出它不应该。
我正在输入各种特殊字符“&$@R@”,并且 b/b2 在 logcat 中都返回 false。我放入编辑文本中的字符串甚至在 logcat 中显示为我输入的确切字符串。有人知道为什么它不匹配字母数字字符吗?
代码:
EditText et1 = (EditText) findViewById(R.id.editText1);
String et1Text = et1.getText().toString();
int et1Length = et1.getText().toString().length();
EditText et2 = (EditText) findViewById(R.id.editText2);
String et2Text = et2.getText().toString();
int et2Length = et2.getText().toString().length();
Pattern p = Pattern.compile("\\W");
Log.d(TAG,et1Text);
Matcher m = p.matcher(et1Text);
boolean b = m.matches();
if (b == true){
Log.d(TAG,"True");
}
else {
Log.d(TAG,"False");
}
Log.d(TAG,et2Text);
Matcher m2 = p.matcher(et2Text);
boolean b2 = m2.matches();
if (b2 == true){
Log.d(TAG,"True");
}
else {
Log.d(TAG,"False");
}
if (et1Length < 4 | et1Length > 15 | et2Length < 4 | et2Length > 15){
Log.d(TAG,"Length dialog");
dialog(1);
}
if (b==true | b2==true){
Log.d(TAG,"Special char dialog");
dialog(1);
}
最佳答案
您可以使用 find()
来代替尝试将整个字符串与模式匹配的 matches()
,它只是尝试查找该模式的任何匹配项。 Source
关于java - Android 正则表达式总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7862167/