前八个字母和最后一个数字的正则表达式
Regex for first eight letters and last number
请帮我编写一个有效的正则表达式。
条件:
- 最多
9
个字符(从 1 到 9)。
- 前八个字符只能是大写字母。
- last字符只能是数字.
示例:
不匹配:
S3
FT5
FGTU7
ERTYUOP9
ERTGHYUKM
对应于:
E
ERT
RTYUKL
VBNDEFRW3
我尝试使用以下方法:
^[A-Z]{1,8}\d{0,1}$
但在这种情况下,FT5 示例匹配,尽管它不应该匹配。
您可以使用基于交替的正则表达式:
^(?:[A-Z]{1,8}|[A-Z]{8}\d)$
正则表达式详细信息:
^
: 开始
(?:
: 启动非捕获组
[A-Z]{1,8}
:匹配1到8个大写字母
|
: 或
[A-Z]{8}\d
:匹配8个大写字母后跟一个数字
)
:结束非捕获组
$
:结束
您还可以使用负查找头排除前 7 个大写字符后跟数字:
^(?![A-Z]{1,7}\d)[A-Z]{1,8}\d?$
^
字符串开头
(?![A-Z]{1,7}\d)
否定前瞻断言不是 1-7 个大写字符和一个数字
[A-Z]{1,8}
匹配大写字符 1-8 次
\d?
匹配可选数字
$
字符串结束
使用支持所有格量词的正则表达式引擎,您可以编写:
^[A-Z]{1,7}+(?:[A-Z]\d?)?$
optional group中的字母只有在[A-Z]{1,7}+
中的量词达到最大且剩余一个字母时才能成功。组内字母只能是第8个字符
对于 .net 正则表达式引擎(不支持所有格量词),您可以使用原子组编写此模式:
^(?>[A-Z]{1,7})(?:[A-Z]\d?)?$
请帮我编写一个有效的正则表达式。 条件:
- 最多
9
个字符(从 1 到 9)。 - 前八个字符只能是大写字母。
- last字符只能是数字.
示例:
不匹配:
S3
FT5
FGTU7
ERTYUOP9
ERTGHYUKM
对应于:
E
ERT
RTYUKL
VBNDEFRW3
我尝试使用以下方法:
^[A-Z]{1,8}\d{0,1}$
但在这种情况下,FT5 示例匹配,尽管它不应该匹配。
您可以使用基于交替的正则表达式:
^(?:[A-Z]{1,8}|[A-Z]{8}\d)$
正则表达式详细信息:
^
: 开始(?:
: 启动非捕获组[A-Z]{1,8}
:匹配1到8个大写字母|
: 或[A-Z]{8}\d
:匹配8个大写字母后跟一个数字
)
:结束非捕获组$
:结束
您还可以使用负查找头排除前 7 个大写字符后跟数字:
^(?![A-Z]{1,7}\d)[A-Z]{1,8}\d?$
^
字符串开头(?![A-Z]{1,7}\d)
否定前瞻断言不是 1-7 个大写字符和一个数字[A-Z]{1,8}
匹配大写字符 1-8 次\d?
匹配可选数字$
字符串结束
使用支持所有格量词的正则表达式引擎,您可以编写:
^[A-Z]{1,7}+(?:[A-Z]\d?)?$
optional group中的字母只有在[A-Z]{1,7}+
中的量词达到最大且剩余一个字母时才能成功。组内字母只能是第8个字符
对于 .net 正则表达式引擎(不支持所有格量词),您可以使用原子组编写此模式:
^(?>[A-Z]{1,7})(?:[A-Z]\d?)?$