我有一个输入000.100.112,它给下面的给定代码输入false,我只需要部分检查是否存在返回true 局部检查正在
中进行 String emailRegex="/^(000\\.000\\.|000\\.100\\.1|000\\.[36])/";
Pattern thePattern = Pattern.compile(emailRegex);
Matcher m = thePattern.matcher(data);
if (m.matches()) {
return true;
}
return m.find();
答案 0 :(得分:1)
Java正则表达式模式不使用斜杠定界符,就像在其他语言(例如PHP)中那样。另外,由于您希望进行 partial 匹配,因此应使用以下模式:
^(000\.000\.|000\.100\.1|000\.[36]).*
^^^^ necessary
请注意模式末尾的.*
,否则部分匹配将不起作用。
String emailRegex="^(000\\.000\\.|000\\.100\\.1|000\\.[36]).*";
Pattern thePattern = Pattern.compile(emailRegex);
Matcher m = thePattern.matcher("000.100.112");
if (m.matches()) {
System.out.println("MATCH");
}
编辑:
正如@MarkMobius所指出的,您也可以将原始模式与Matcher#find()
一起使用:
String emailRegex="^(000\\.000\\.|000\\.100\\.1|000\\.[36])";
Pattern thePattern = Pattern.compile(emailRegex);
Matcher m = thePattern.matcher("000.100.112");
if (m.find()) {
System.out.println("MATCH");
}
答案 1 :(得分:0)
您的在线正则表达式测试仪使用JavaScript正则表达式文字。在JavaScript中,正则表达式可以用/.../
分隔。您在在线正则表达式测试器中看到的开头和结尾的/
实际上不是正则表达式模式的一部分。它们就像Java字符串中的引号。
"string"
中的引号不是字符串的一部分。同样,/someregex/
中的斜杠也不是正则表达式的一部分。
因此,当您在Java中使用正则表达式时,不应包含这些斜杠:
String emailRegex="^(000\\.000\\.|000\\.100\\.1|000\\.[36])";
如果这样做,它们将被解释为就像您要在字面上匹配斜杠一样。