Javascript 正则表达式:匹配两个条件之一?
嗨,我对正则表达式知之甚少。但我需要它在表单验证中使用angularJs 以下是要求 只有在以下情况下,输入框才应接受: (1)前2个字母字母字母+6个数字 或 (2)8个数字 以下是一些正确的输入:- (1) SH123456 (2)12345678 (3) sd456565 我尝试了Javascript 正则表达式:匹配两个条件之一?,javascript,angularjs,regex,angularjs-ng-pattern,Javascript,Angularjs,Regex,Angularjs Ng Pattern,嗨,我对正则表达式知之甚少。但我需要它在表单验证中使用angularJs 以下是要求 只有在以下情况下,输入框才应接受: (1)前2个字母字母字母+6个数字 或 (2)8个数字 以下是一些正确的输入:- (1) SH123456 (2)12345678 (3) sd456565 我尝试了data ng pattern=“/(^([a-zA-Z]){2}([0-9]){6})([0-9]*)?$/”,它在上述两种情况下都可以正常工作,但它仍然接受像S2D3E4F5这样的字符串,也可能是许多其他组
data ng pattern=“/(^([a-zA-Z]){2}([0-9]){6})([0-9]*)?$/”
,它在上述两种情况下都可以正常工作,但它仍然接受像S2D3E4F5这样的字符串,也可能是许多其他组合
我做错了什么,我无法发现
任何帮助都是值得感激的
感谢您的正则表达式中的两个可选分支分别锚定:
-字符串开头的2个字母和6个数字(^([a-zA-Z]){2}([0-9]){6})
-或|
-可选字符串末尾的零或多个数字([0-9]*)?$
data-ng-pattern="/^([a-zA-Z]{2}[0-9]{6}|[0-9]{8})?$/"
^ ^^^^
看
现在,模式将匹配:
-字符串的开头^
-分组的开始:(
-2个字母和6个数字[a-zA-Z]{2}[0-9]{6}
-或|
-8位[0-9]{8}
-分组结束,)?
量词使其匹配1或0次(可选)?
-字符串结束$
- ab123456
- 12345678
- aa441236
- aw222222
- 你可以试试这个
它将接受:
可能是@DavidR的副本否,这不是该副本。这是一个锚定问题。它在语义上与我的相同,所以它也会起作用。形式上的区别是这里只使用了一个嵌套捕获组,而我的没有嵌套组。两者的性能相似。两种情况下共有6个数值。这就是为什么我对6个数值使用公共部分。还有很多方法可以编写正则表达式。:)相当于^([a-zA-Z0-9]{2}[0-9]{6})$,似乎不是。除a1234567外,您的表达式也将被删除。但它需要前2个字母alpha+6@jensgram@revo当前位置如果有人对你的答案投了反对票,可能是他们有问题。我没有表达任何担忧,我只是要求“建设性的批评”。当给出的答案详细、有效且有帮助时,普通的否决票不会增加价值。在正常情况下,这是正确的,但在你收到否决票的时候不会。当然,如果我下次看到同样的行为,我会照我说的做。@revo请现在做。我当然会做,但在我确定我的投诉会得到考虑的更合适的时间做。
^(([a-zA-Z]{2}|[0-9]{2})[0-9]{6})?$