java中的正则表达式,仅允许使用字母数字输入数据

时间:2015-12-18 06:58:52

标签: java regex alphanumeric

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

比如说:ABC12DG - 应该允许这个

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

我试过这个

假设a是包含输入数据的字符串

然后a.matches(“^ [a-zA-Z0-9] + $”)这允许第一个和第二个输入如上所述

我只希望它允许字母数字输入,而不仅仅是数字或字母 怎么做

2 个答案:

答案 0 :(得分:3)

使用否定先行或替换运算符。

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]*$");

答案 1 :(得分:1)

您可以尝试使用此正则表达式:

G

结果是:

    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));