否定java正则表达式

b0zn9rqh  于 2023-01-15  发布在  Java
关注(0)|答案(1)|浏览(111)

我使用下面几行代码来检查String是否只包含“特殊”字符:

String regex = "^[^a-zA-Z0-9]*$";

if(!someinput.matches(regex)){
    System.out.println("your input isn't made of only special characters");
}

但是我希望正则表达式不需要前面的“!”否定,以便使它自给自足。
我已经尝试过前瞻**"^(?![^a-zA-Z 0 -9]*)$"**,但是不起作用。为什么不起作用?我该怎么办?

编辑:通过注解解决

因此,我在寻找一个正则表达式,它可以识别任何至少包含一个字母数字字符的字符串。
我的第一次和第二次尝试都是从“否定”的Angular 来看待它的:我试图找到一个正则表达式来识别所有那些字符不特殊的字符串。
但最干净的解决方案是找到所有那些至少包含一个字母数字字符的字符串。
所以我需要一个语义倒置?
不管怎样,我喜欢@Bohemian提出的这个解决方案

matches(".*[A-Za-z0-9].*")
8i9zcol2

8i9zcol21#

试试这个:

String regex = ".*?[a-zA-Z0-9].*"; // a letter/digit is somewhere in the string 

if (!someinput.matches(regex)) {
    System.out.println("your input does not contain any non-special characters");

}

相关问题