用于检查可选数字组的正则表达式
Regex to check Optional Group of numbers
我正在尝试创建一个应该能够接受以下字符串的正则表达式
proj_asdasd_000.gz.xml
proj_asdasd.gz.xml
基本上第二个下划线是可选的,如果后面有任何值,它应该只是整数。
以下是我正在尝试的正则表达式。
^proj([a-zA-z0-9]?)+_[a-zA-z]+(_[0-9]?)+\.[a-z]+.[a-z]
有什么让它接受上述字符串的建议吗?
您可以使用
^proj[a-zA-Z0-9]*_[a-zA-Z]+(?:_[0-9]+)?\.[a-z]+\.[a-z]+$
^proj[a-zA-Z0-9]*_[a-zA-Z]+(?:_[0-9]+)?(?:\.[a-z]+){2}$
详情
^
- 字符串开头
proj
- 文字子串
[a-zA-Z0-9]*
- 0 个或多个字母数字字符
_
- 一个 _
字符
[a-zA-Z]+
- 1+ 个 ASCII 字母
(?:_[0-9]+)?
- 一个可选的下划线序列,后跟 1+ 个数字
\.[a-z]+\.[a-z]+
= (?:\.[a-z]+){2}
- 出现两次 .
和 1+ 个小写 ASCII 字母
$
- 字符串结尾。
备注:
[A-z]
([a-zA-z0-9]?)+
匹配一个可选字符 1 次或多次,这没有什么意义。用 +
匹配一个字符 1 次或更多次,或者用 *
匹配 0 次或更多次,不需要括号
(_[0-9]?)+
匹配 1 个或多个 _
后跟一个可选数字的序列(例如,它匹配 _9___1_
)。必须交换量词以匹配 _
和 1+ 位的可选 序列 。
我正在尝试创建一个应该能够接受以下字符串的正则表达式
proj_asdasd_000.gz.xml
proj_asdasd.gz.xml
基本上第二个下划线是可选的,如果后面有任何值,它应该只是整数。
以下是我正在尝试的正则表达式。
^proj([a-zA-z0-9]?)+_[a-zA-z]+(_[0-9]?)+\.[a-z]+.[a-z]
有什么让它接受上述字符串的建议吗?
您可以使用
^proj[a-zA-Z0-9]*_[a-zA-Z]+(?:_[0-9]+)?\.[a-z]+\.[a-z]+$
^proj[a-zA-Z0-9]*_[a-zA-Z]+(?:_[0-9]+)?(?:\.[a-z]+){2}$
详情
^
- 字符串开头proj
- 文字子串[a-zA-Z0-9]*
- 0 个或多个字母数字字符_
- 一个_
字符[a-zA-Z]+
- 1+ 个 ASCII 字母(?:_[0-9]+)?
- 一个可选的下划线序列,后跟 1+ 个数字\.[a-z]+\.[a-z]+
=(?:\.[a-z]+){2}
- 出现两次.
和 1+ 个小写 ASCII 字母$
- 字符串结尾。
备注:
[A-z]
([a-zA-z0-9]?)+
匹配一个可选字符 1 次或多次,这没有什么意义。用+
匹配一个字符 1 次或更多次,或者用*
匹配 0 次或更多次,不需要括号(_[0-9]?)+
匹配 1 个或多个_
后跟一个可选数字的序列(例如,它匹配_9___1_
)。必须交换量词以匹配_
和 1+ 位的可选 序列 。