繁体   English   中英

正则表达式模式如何写入以检查 Java 中的至少一个字符串和数字?

[英]How regex pattern write to check at least one string and number in Java?

我有一个与正则表达式相关的问题,检查至少一个字符串和数字,其中排除任何符号,如@!#%^&*。 我已经阅读了很多文章,但仍然找不到作为我期望结果的正确答案。

示例:我有一个字符串,如:111AB11111

我的期望结果:如果输入字符串

  1. “1111”=>假
  2. “AAA”=>假
  3. “1A” => 真
  4. “A1” => 真
  5. “111AAA111”=>真
  6. “AAA11111AA”=>真
  7. “#AA111BBB”=>假
  8. “111AAAA$”=>假

哪个java regex patter可以显示上述情况 感谢您的宝贵时间检查和建议 谢谢!

您可以将String#matches与以下正则表达式模式一起使用:

^[A-Z0-9]*(?:[0-9][A-Z0-9]*[A-Z]|[A-Z][A-Z0-9]*[0-9])[A-Z0-9]*$

示例 Java 代码:

List<String> inputs = Arrays.asList(new String[] { "111AB", "111", "AB", "111AB$" });
for (String input : inputs) {
    if (input.matches("[A-Z0-9]*(?:[0-9][A-Z0-9]*[A-Z]|[A-Z][A-Z0-9]*[0-9])[A-Z0-9]*")) {
        System.out.println(input + " => VALID");
    }
    else {
        System.out.println(input + " => INVALID");
    }
}

这打印:

111AB => VALID
111 => INVALID
AB => INVALID
111AB$ => INVALID

请注意,实际与String#matches一起使用的正则表达式模式没有前导/尾随^/$锚点。 这是因为matches API 将正则表达式模式隐式应用于整个字符串。

为了解释正则表达式模式,它只是尝试以任何顺序匹配至少有一个数字或字母的输入。

这将实现您的目标:

^(?:[0-9]+[A-Za-z]|[A-Za-z]+[0-9])[A-Za-z0-9]*$

字母前面的数字,或数字前面的字母,后面只有字母和数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM