作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果字符串包含字母 L、M 或 R 以外的任何内容,我需要进行正则表达式检查,否则检查会失败。
我已经尝试过将 L、M 和 R 列入白名单,并将任何非 L、M 或 R 的内容列入黑名单,或者我是这么认为的。我可能两者都失败了。
if(Pattern.compile("^[LMR]$").matcher("MMMRMMMRMMLLMMK").matches()){
return false;
}
if(Pattern.compile("[^LMR]").matcher("MMMRMMMRMMLLMMK").matches()){
return false;
}
Pattern pat = Pattern.compile("^LMR]");
Matcher mat = pat.matcher("MMMRMMMRMMLLMMK");
if(pat.matches("[^LMR]", "MMMRMMMRMMLLMMK")){
return false;
}
预期:字符串“MMMRMMMRMMLLMMK”失败。实际:我可以在该匹配器中放入任何东西,它都会通过。
最佳答案
这个表达式可能很简单:
^[LMR]*$
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
final String regex = "^[LMR]*$";
final String string = "MMMRMMMRMMLLMMK\n"
+ "MMMRMMMRMMLLMM\n"
+ "L\n"
+ "M\n"
+ "R\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
该表达式在 regex101.com 的右上角面板中进行了解释,如果您想探索/简化/修改它,请在this link中,如果您愿意,您可以观察它如何与一些示例输入匹配。
关于java - 如何只允许三个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57263102/
我是一名优秀的程序员,十分优秀!