有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (3) 个答案

  1. # 1 楼答案

    你需要两个正则表达式。一个只检查字母数字/[a-zA-Z0-9]+/,另一个检查不只是数字/^[^0-9]+$/如果第一个通过,只检查第二个

  2. # 2 楼答案

    这个regexp应该完成以下任务:/^[a-zA-Z\d]*[a-zA-Z][a-zA-Z\d]*^/

    请注意,这个正则表达式可能会进行大量的回溯;最坏的情况是O(N^2)。让第一次重复变得懒惰而不是急切会让正则表达式更快。。。如果要匹配的话。加速不匹配情况的方法是使用两个正则表达式

    或者更好的是,在简单Java中根本不使用正则表达式和代码匹配:

    public boolean matchSymbol (String input) {
        boolean seenLetter = false;
        final int len = input.length();
        for (int i = 0; i < len; i++) {
            char ch = input.charAt(i);
            if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z') {
                seenLetter = true;
            } else if (ch < '0' || ch > '9') {
                return false;
            }
        }
        return seenLetter;
    }
    

    对于N个字符串,这会在N循环迭代中成功,或者(通常)在小于N的迭代中失败

  3. # 3 楼答案

    "^[0-9]*+[A-Za-z][A-Za-z0-9]*+$"