【问题标题】:Regular expression in java to allow only alphanumeric input datajava中的正则表达式只允许字母数字输入数据
【发布时间】:2015-12-18 06:58:52
【问题描述】:

我需要只接受字母数字数据的正则表达式。

例如:ABC12DG - 应该允许这个

如果输入数据是 123000 - 不应允许,因为它只是数字。

我试过了

说a是一个包含输入数据的字符串

然后 a.matches("^[a-zA-Z0-9]+$") 这允许上面的第一个和第二个输入

我只希望它允许输入字母数字,而不仅仅是数字或字母 如何做到这一点

【问题讨论】:

    标签: java regex alphanumeric


    【解决方案1】:

    使用否定的前瞻或交替运算符。

    a.matches("^(?![A-Za-z]+$)(?!\\d+$)[a-zA-Z0-9]+$");
    
    • (?![A-Za-z]+$) 断言匹配不会只包含字母。
    • (?!\\d+$) 断言匹配不会只包含数字。
    • [a-zA-Z0-9]+ 匹配一个或多个字母数字字符。

    a.matches("^[a-zA-Z0-9]*(?:[a-zA-Z]\\d|\\d[a-zA-Z])[a-zA-Z0-9]*$");
    

    【讨论】:

    • 这是什么表达方式..你能解释一下吗
    【解决方案2】:

    你可以试试这个正则表达式的文本:

        String reg = "\\p{Alpha}+\\d+";
        String str1 = "It &* is %$ now OK 2015";
        String str2 = "ItisnowOK2015";
        String str3 = "888";
        String str4 = "aaa";
        System.out.println("str1 = "+str1.matches(reg));
        System.out.println("str2 = "+str2.matches(reg));
        System.out.println("str3 = "+str3.matches(reg));
        System.out.println("str4 = "+str4.matches(reg));
    

    结果是:

    str1 = false
    str2 = true
    str3 = false
    str4 = false
    

    【讨论】:

    • 你能不能像 a-z A-Z 那样给它,这样就好了
    • 不是这种方式.. 我正在寻找包含这种表达式 a-zA-Z 0-9 而不是 Alnum 的正则表达式
    • 你自己说:java中的正则表达式只允许输入字母数字数据。然后这个正则表达式就按照你的要求做
    • @BahramdunAdil 您的正则表达式也应该允许 aaa888 。但这不是我们所期望的..
    • 我已经在答案中写了一个测试代码,你看到了吗
    猜你喜欢
    • 2011-12-29
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    相关资源
    最近更新 更多