gpt4 book ai didi

java - 将匹配 6 个字符的正则表达式,仅允许数字、前导和尾随空格

转载 作者:IT老高 更新时间:2023-10-28 21:05:52 25 4
gpt4 key购买 nike

我尝试实现的正则表达式应该匹配以下数据:

  1. 123456
  2. 12345 
  3.  23456
  4.      5
  5. 1     
  6.       
  7.   2   
  8.  2345 

不应该匹配以下:

  1. 12 456
  2. 1234 6
  3.  1 6
  4. 1 6

总共应为 6 个字符,包括数字、前导和尾随空格。它也可以是 6 个字符的空格。 如果使用数字,它们之间不应有空格。

我尝试了以下表达式无济于事:

^\s*[0-9]{6}$
\s*[0-9]\s*

最佳答案

您可以只使用带有限制性 (?=.{6}$) 前瞻的 *\d* * 模式:

^(?=.{6}$) *\d* *$

查看 regex demo

解释:

  • ^ - 字符串开始
  • (?=.{6}$) - 字符串只能包含 6 个除换行符以外的任何字符
  • * - 0+ 个常规空格(NOTE 匹配水平空格 - 使用 [^\S\r\n])<
  • \d* - 0+ 位
  • * - 0+ 个常规空格
  • $ - 字符串结束。

Java demo(最后 4 个是应该失败的测试用例):

List<String> strs = Arrays.asList("123456", "12345 ", " 23456", "     5", // good
"1 ", " ", " 2 ", " 2345 ", // good
"12 456", "1234 6", " 1 6", "1 6"); // bad
for (String str : strs)
System.out.println(str.matches("(?=.{6}$) *\\d* *"));

请注意,当在 String#matches() 中使用时,您不需要初始 ^ 和最终 $ anchor ,因为方法需要默认情况下通过锚定模式来匹配完整的字符串。

关于java - 将匹配 6 个字符的正则表达式,仅允许数字、前导和尾随空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36443617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com