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。我建议使用英语拼写检查器,这对从您的问题中获得更好的印象非常有用。