【发布时间】:2015-12-18 06:58:52
【问题描述】:
我需要只接受字母数字数据的正则表达式。
例如:ABC12DG - 应该允许这个
如果输入数据是 123000 - 不应允许,因为它只是数字。
我试过了
说a是一个包含输入数据的字符串
然后 a.matches("^[a-zA-Z0-9]+$") 这允许上面的第一个和第二个输入
我只希望它允许输入字母数字,而不仅仅是数字或字母 如何做到这一点
【问题讨论】:
标签: java regex alphanumeric
我需要只接受字母数字数据的正则表达式。
例如:ABC12DG - 应该允许这个
如果输入数据是 123000 - 不应允许,因为它只是数字。
我试过了
说a是一个包含输入数据的字符串
然后 a.matches("^[a-zA-Z0-9]+$") 这允许上面的第一个和第二个输入
我只希望它允许输入字母数字,而不仅仅是数字或字母 如何做到这一点
【问题讨论】:
标签: java regex alphanumeric
使用否定的前瞻或交替运算符。
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]*$");
【讨论】:
你可以试试这个正则表达式的文本:
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
【讨论】:
aaa 和 888 。但这不是我们所期望的..