Java 带空格的两个长度的正则表达式

Java 带空格的两个长度的正则表达式,java,regex,Java,Regex,我正试图用以下条件编写一个正则表达式 允许在字符串中的任何位置为空 前三个是字符范围(1-3) 接下来的六个是数字(必须)-范围(6) 下一个可选字符-范围(1-3) 在此之后,可选择数字范围(0-2) 为此,我尝试了很多东西,但都没有效果 ^[a-zA-Z]{1,3}[0-9]{6}[a-zA-Z]{0,3}[0-9]{0,2} 此表达式适用于匹配所有条件,但不允许空字符串。提前谢谢 我只想验证字符串,如“AB 123456 ADF 12”。 正如我提到的第一点,字符串在给定字符串中的任何位

我正试图用以下条件编写一个正则表达式

  • 允许在字符串中的任何位置为空
  • 前三个是字符范围(1-3)
  • 接下来的六个是数字(必须)-范围(6)
  • 下一个可选字符-范围(1-3)
  • 在此之后,可选择数字范围(0-2)
  • 为此,我尝试了很多东西,但都没有效果

    ^[a-zA-Z]{1,3}[0-9]{6}[a-zA-Z]{0,3}[0-9]{0,2}
    
    此表达式适用于匹配所有条件,但不允许空字符串。提前谢谢

    我只想验证字符串,如“AB 123456 ADF 12”。
    正如我提到的第一点,字符串在给定字符串中的任何位置都包含空格,如“AB 123 456 ADF 12”

    您必须将模式用括号括起来,并使用
    使其成为可选模式:

    ^(?:[a-zA-Z]{1,3}[0-9]{6}[a-zA-Z]{0,3}[0-9]{0,2})?$
    
    ^(?:[a-zA-Z]{1,3}[0-9]{6}[a-zA-Z]{0,3}[0-9]{0,2}|\s*)$
                                                    ^^^^
    
    • ^
      断言字符串的开头
    • (?:
      非捕获组的开始
      • [a-zA-Z]{1,3}[0-9]{6}[a-zA-Z]{0,3}[0-9]{0,2}
        您的模式
    • )?
      NCG结束,可选
    • $
      断言字符串结尾
    如果要将字符串与空白字符匹配,请添加
    \\s
    (或
    \s
    处理文字)并删除

    ^(?:[a-zA-Z]{1,3}[0-9]{6}[a-zA-Z]{0,3}[0-9]{0,2})?$
    
    ^(?:[a-zA-Z]{1,3}[0-9]{6}[a-zA-Z]{0,3}[0-9]{0,2}|\s*)$
                                                    ^^^^
    

    更新 根据评论:

    ^(?:[a-zA-Z](?:\s*[a-zA-Z]){0,2}\s*\d(?:\s*\d){5}(?:\s*[a-zA-Z](?:\s*[a-zA-Z]){0,2})?\s*(?:\d\s*\d?)?)$
    

    您必须将模式用括号括起来,并使用
    使其成为可选模式:

    ^(?:[a-zA-Z]{1,3}[0-9]{6}[a-zA-Z]{0,3}[0-9]{0,2})?$
    
    ^(?:[a-zA-Z]{1,3}[0-9]{6}[a-zA-Z]{0,3}[0-9]{0,2}|\s*)$
                                                    ^^^^
    
    • ^
      断言字符串的开头
    • (?:
      非捕获组的开始
      • [a-zA-Z]{1,3}[0-9]{6}[a-zA-Z]{0,3}[0-9]{0,2}
        您的模式
    • )?
      NCG结束,可选
    • $
      断言字符串结尾
    如果要将字符串与空白字符匹配,请添加
    \\s
    (或
    \s
    处理文字)并删除

    ^(?:[a-zA-Z]{1,3}[0-9]{6}[a-zA-Z]{0,3}[0-9]{0,2})?$
    
    ^(?:[a-zA-Z]{1,3}[0-9]{6}[a-zA-Z]{0,3}[0-9]{0,2}|\s*)$
                                                    ^^^^
    

    更新 根据评论:

    ^(?:[a-zA-Z](?:\s*[a-zA-Z]){0,2}\s*\d(?:\s*\d){5}(?:\s*[a-zA-Z](?:\s*[a-zA-Z]){0,2})?\s*(?:\d\s*\d?)?)$
    

    使整个事情成为可选的,并添加
    $
    锚定:
    ^(?[a-zA-Z]{1,3}[0-9]{6}[a-zA-Z]{0,3}[0-9]{0,2})$
    。如果空字符串表示没有字符或空格的字符串,则只执行以下操作:
    ^(?[a-zA-Z]{1,3}[0-9]{6}[a-zA-Z]{0,3}[0-9]{0,2}|\s*)$
    谢谢您的回复。但是这不允许在字符之间使用空格使整个事情成为可选的并添加
    $
    锚定:
    ^(?[a-zA-Z]{1,3}[0-9]{6}[a-zA-Z]{0,3}[0-9]{0,2})$
    。如果空字符串表示没有字符或空格的字符串,则只执行以下操作:
    ^(?[a-zA-Z]{1,3}[0-9]{6}[a-zA-Z]{0,3}[0-9]{0,2}|\s*)$
    谢谢您的回复。但这不允许字符之间有空格此正则表达式不允许我在字符或数字之间输入空格您希望正则表达式匹配的输入字符串是什么?我想验证123456 ABC 12每个模式之间只允许有一个空格还是可以有多个?像
    A_uuuuuuuuuu123456
    我试图验证多个空格。正则表达式不允许我在字符或数字之间输入空格。您希望正则表达式匹配什么输入字符串?我想验证123456 ABC 12每个模式之间只允许一个空格,还是可以是多个?像
    A_uuuuuuuuu123456
    我也在尝试验证多个空格