正则表达式:匹配两个条件中的任何一个?
Regular expression : match either of two conditions?
您好,我不太了解正则表达式。但是我在使用 angularJs.
进行表单验证时需要它
以下是要求
输入框应仅接受
(1) 前 2 个字母 alpha + 6 个数字
或
(2) 8 数字
以下是一些正确的输入:-
(1)SH123456
(2)12345678
(3)sd456565
我试过 data-ng-pattern="/(^([a-zA-Z]){2}([0-9]){6})|([0-9]*)?$/"
,它在上述两种情况下都工作正常,但它仍然接受像 S2D3E4F5 这样的字符串,也可能是许多其他组合。
我做错了什么我找不到。
任何帮助都是可观的!!!
谢谢
在您的正则表达式中,两个备选分支分别锚定:
(^([a-zA-Z]){2}([0-9]){6})
- 字符串开头的 2 个字母和 6 个数字
|
- 或
([0-9]*)?$
- 字符串末尾可选的零个或多个数字
您需要调整组的边界:
data-ng-pattern="/^([a-zA-Z]{2}[0-9]{6}|[0-9]{8})?$/"
^ ^^^^
参见regex demo。
现在,模式将匹配:
^
- 字符串开头
(
- 分组开始:
[a-zA-Z]{2}[0-9]{6}
- 2 个字母和 6 个数字
|
- 或
[0-9]{8}
- 8 位数
)?
- 分组结束和 ?
量词使其匹配 1 次或 0 次(可选)
$
- 字符串结尾。
你可以试试这个DEMO LINK HERE
^(([a-zA-Z]{2}|[0-9]{2})[0-9]{6})?$
它将接受:
- ab123456
- 12345678
- aa441236
- aw222222
您好,我不太了解正则表达式。但是我在使用 angularJs.
进行表单验证时需要它以下是要求
输入框应仅接受
(1) 前 2 个字母 alpha + 6 个数字
或
(2) 8 数字
以下是一些正确的输入:-
(1)SH123456 (2)12345678 (3)sd456565
我试过 data-ng-pattern="/(^([a-zA-Z]){2}([0-9]){6})|([0-9]*)?$/"
,它在上述两种情况下都工作正常,但它仍然接受像 S2D3E4F5 这样的字符串,也可能是许多其他组合。
我做错了什么我找不到。
任何帮助都是可观的!!!
谢谢
在您的正则表达式中,两个备选分支分别锚定:
(^([a-zA-Z]){2}([0-9]){6})
- 字符串开头的 2 个字母和 6 个数字|
- 或([0-9]*)?$
- 字符串末尾可选的零个或多个数字
您需要调整组的边界:
data-ng-pattern="/^([a-zA-Z]{2}[0-9]{6}|[0-9]{8})?$/"
^ ^^^^
参见regex demo。
现在,模式将匹配:
^
- 字符串开头(
- 分组开始:[a-zA-Z]{2}[0-9]{6}
- 2 个字母和 6 个数字|
- 或[0-9]{8}
- 8 位数
)?
- 分组结束和?
量词使其匹配 1 次或 0 次(可选)$
- 字符串结尾。
你可以试试这个DEMO LINK HERE
^(([a-zA-Z]{2}|[0-9]{2})[0-9]{6})?$
它将接受:
- ab123456
- 12345678
- aa441236
- aw222222