信用卡正则表达式在AngularJs中不起作用
Credit card regex not working in AngularJs
我使用以下正则表达式来验证各种信用卡类型的信用卡号:
/^((5[1-5]'d{14})|(4'd{12}('d{3})?)|(3[47]'d{13})|(6011'd{14})|((30[0-5]|36'd|38'd)'d{11}))(?<='d)$/
使用regex101.com等在线验证器可以正常工作,但一旦我尝试将其与ngPattern一起使用,它就不会按预期进行验证。基本上,它也允许输入字符,即使regex不允许这样做。
样品:http://plnkr.co/edit/r6qGoyfKHnzoOQmv0kpv
<input type="text" name='cc' ng-model="usd" ng-pattern="/^(5[1-5]'d{14})|(4'd{12}('d{3})?)|(3[47]'d{13})|(6011'd{14})|((30[0-5]|36'd|38'd)'d{11})$/"
placeholder="credit card number"/>
请尝试在末尾输入带有一些字符的Visa测试卡号。
感谢您在这方面的任何帮助。
您需要将所有内容放入一个组:
^(?:(5[1-5]'d{14})|(4'd{12}('d{3})?)|(3[47]'d{13})|(6011'd{14})|((30[0-5]|36'd|38'd)'d{11}))$
^^^ ^
查看regex演示
问题的出现是因为^
和$
锚仅分别应用于第一个和最后一个备选方案。
添加外部组(可以是捕获或非捕获,在AngularJS中这无关紧要)将确保开始和结束锚点将应用于整个regex模式。
相关文章:
- 我的AngularJS表达式没有'不起作用
- AngularJS指令部分应用的函数don'不起作用
- AngularJS ng include dons'不起作用
- AngularJs和Laravel的Pretty Urls不起作用
- Google Maps API OverlayView()在AngularJS指令中不起作用
- AngularJS ng include won'不知什么原因不起作用
- AngularJS没有'不起作用
- Grunt concat js angularjs 不起作用
- angularjs ng点击运行时标记不起作用
- AngularJS:$on dons'不起作用
- AngularJS-简单的教程不起作用
- 输入类型范围在angularjs重复内不起作用
- 数据绑定在特定情况下不起作用(AngularJS)
- 路由不起作用 AngularJS,只是添加一个哈希
- 在 jsfiddle 中拖放表中的行不起作用 - angularjs
- 提交按钮不起作用 AngularJS
- $location.search() 不起作用 - AngularJs 1.5
- 单击按钮时获取单选按钮值不起作用angularjs
- Ng-repeat不起作用AngularJs
- 提交指令不起作用 AngularJS