Java 正则表达式:如何匹配多个值的精确长度?

Java 正则表达式:如何匹配多个值的精确长度?,java,regex,Java,Regex,如何使用此模式:[A-Za-z0-9]{10}也匹配其他文本大小,如:12和25 我试着让它像: [A-Za-z0-9]{10 | 12 | 25} ([A-Za-z0-9]){10}{12}{25} 但是它没有成功。如果只需要匹配特定的尺寸,则需要使用替换: ^(?:[A-Za-z0-9]{10}|[A-Za-z0-9]{12}|[A-Za-z0-9]{25})$ 如果要匹配范围内的符号,例如10到25,可以使用 ^[A-Za-z0-9]{10,25}$ 另外,[A-Za-z0-9]可以替

如何使用此模式:
[A-Za-z0-9]{10}
也匹配其他文本大小,如:12和25

我试着让它像:

  • [A-Za-z0-9]{10 | 12 | 25}
  • ([A-Za-z0-9]){10}{12}{25}

  • 但是它没有成功。

    如果只需要匹配特定的尺寸,则需要使用替换:

    ^(?:[A-Za-z0-9]{10}|[A-Za-z0-9]{12}|[A-Za-z0-9]{25})$
    
    如果要匹配范围内的符号,例如10到25,可以使用

    ^[A-Za-z0-9]{10,25}$
    
    另外,
    [A-Za-z0-9]
    可以替换为
    \p{Alnum}
    (请参阅)

    \p{Alnum}
    字母数字字符:
    [\p{Alpha}\p{Digit}]

    Java与
    字符串匹配(不需要锚定):

    你本来可以的

    ([A-Za-z0-9]){10}|([A-Za-z0-9]){12}|([A-Za-z0-9]){25}
    
    注意,
    [A-Za-z0-9]
    可以用
    \p{Alnum}
    更简单地表示,使得正则表达式:

    (\\p{Alnum}){10}|(\\p{Alnum}){12}|(\\p{Alnum}){25}
    

    为了避免正则表达式引擎的无用工作,您可以编写:

    [A-Za-z0-9]{10}(?:[A-Za-z0-9]{2}(?:[A-Za-z0-9]{13})?)?
    
    这样,第一个字符只被解析一次

    [A-Za-z0-9]{10}(?:[A-Za-z0-9]{2}(?:[A-Za-z0-9]{13})?)?