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})?)?