Java 正则表达式验证问题

Java 正则表达式验证问题,java,regex,Java,Regex,我需要验证并防止为输入字符串输入“=”(等号),并使用正则表达式捕捉它[=]*。但它也能抓住其他弦。ex输入:2c450807-4a4c-4f18-bf4f-5a100ced87a0。上面的正则表达式也捕获了这个字符串。 请帮帮我 还有,有人能解释一下为什么这个正则表达式没有捕捉到输入吗。我需要捕捉正则表达式中提到的特殊字符 final String REGEX="[.,%*$#@?^<!&>'|/\\\\~\\[\\]{}+=\"-]*";

我需要验证并防止为输入字符串输入“=”(等号),并使用正则表达式捕捉它
[=]*
。但它也能抓住其他弦。ex输入:2c450807-4a4c-4f18-bf4f-5a100ced87a0。上面的正则表达式也捕获了这个字符串。 请帮帮我

还有,有人能解释一下为什么这个正则表达式没有捕捉到输入吗。我需要捕捉正则表达式中提到的特殊字符

            final String REGEX="[.,%*$#@?^<!&>'|/\\\\~\\[\\]{}+=\"-]*";


            Pattern pattern = Pattern.compile(REGEX);
            Matcher matcher = pattern.matcher("2c450807-4a4c-4f18-bf4f-5a100ced87a0");

            if (matcher.matches()) {

                System.out.println("found");

            }
            else{

                System.out.println("not found!");
            }
final String REGEX=“[,%*$\\@?^'/\\\\\\\\\\[\\]{}+=\”-]*”;
Pattern=Pattern.compile(REGEX);
匹配器匹配器=模式匹配器(“2c450807-4a4c-4f18-bf4f-5a100ced87a0”);
if(matcher.matches()){
System.out.println(“找到”);
}
否则{
System.out.println(“未找到!”);
}

这个指纹“找不到!“

我认为您的问题是,
*
量词允许前面的子模式出现0次。因此,
[=]*
匹配任何字符串

你只需要使用一个

=
然后您
2c450807-4a4c-4f18-bf4f-5a100ced87a0

另外请注意,
=
不是一个特殊的正则表达式字符,您不需要转义它,也不需要放入字符类以避免转义


但是,正如在另一条评论中指出的,如果您不必使用“regex”,只需检查字符串是否包含带有
str的
=
。contains(“=”)
当您使用正则表达式时,您可能希望根据项目出现的次数查找项目:

如果要精确匹配组容器
n
symbol(在您的示例中为:Equal(=)),可以执行以下操作:

(=){n}
ie:if(myVar==myValue)在
n
=3时匹配

如果要将此符号匹配一次或多次:

(=)+
ie:if((myVar=myValue)或(myVar==myValue)或(myVar==myValue))

如果要匹配可能出现的项目:

(=)*
ie:if(myVar
该项不需要出现在表达式中进行检查。值可以出现0到
n次。

请提供您拥有的完整相关代码。可能需要使用
=
=+
?注意
[=]*
可能匹配空字符串,因此它将匹配任何字符串。您可以简单地使用someString。contains(“=”)来检查它是否包含=。如果包含,它将返回true。我建议使用英语拼写检查器,这对从您的问题中获得更好的印象非常有用。