我需要得到只有字母数字的值,它可以是任何属于这个的值
1. asd7989 - true
2. 7978dfd - true
3. auo789dd - true
4. 9799 - false
5.any special characters - false
我尝试了以下但它没有给出预期的结果
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.struts.action.ActionMessage;
public class Test {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("^[0-9a-zA-Z]+$");
Matcher matcher = pattern.matcher("465123");
if(matcher.matches()) {
System.out.println("match");
}else{
System.out.println("not match");
}
}
}
结果实际上应该是不匹配
,但我得到的是匹配
最佳答案
您需要为此正则表达式使用前瞻:
^(?=.*?[a-zA-Z])(?=.*?[0-9])[0-9a-zA-Z]+$
RegEx Demo
Lookaheads
将确保输入字符串中至少存在一个字母表和至少一个数字。
关于java - 仅允许使用 java 的字母数字值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26010162/