我需要只接受字母数字数据的正则表达式。
比如说:ABC12DG - 应该允许这个
如果输入数据是123000 - 不应该允许,因为它只是数字。
我试过这个
假设a是包含输入数据的字符串
然后a.matches(“^ [a-zA-Z0-9] + $”)这允许第一个和第二个输入如上所述
我只希望它允许字母数字输入,而不仅仅是数字或字母 怎么做
答案 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));