java - Android 正则表达式总是返回 false

标签 java regex

我遇到了正则表达式总是返回 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/

相关文章:

java - 如何使用 Web 参数设置 Activity Spring 配置文件

java - 使用 JProfiler 分析 Java mongodb 查询, "Retrieve Data"和 "Query"之间有什么区别

regex - 使用 Regex 重命名文件名并使用 powershell 删除之后的所有内容

javascript - JS Regex lookbehind 在 firefox 和 safari 中不起作用

java - 在java中从文件中剪切列

java - 使用来自 GoDaddy 的 spc 文件签署 java applet

Java string == Vs Equals 与连接结合时给出 true 或 false

PHP 从字符串中获取图像的所有 URL

regex - PCRE 正则表达式捕获组可以是数字或字母,但不能只是数字

javascript - 是否有 Vim 正则表达式开始和结束单词原子 "\<"和 "\>"的 JavaScript 等价物?