繁体   English   中英

信用卡正则表达式在 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 一起使用,它就不会按预期进行验证。 基本上,即使正则表达式不允许,它也允许输入字符。

示例: 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}))$
 ^^^                                                                                       ^

查看正则表达式演示

问题出现是因为^$锚点仅分别应用于第一个和最后一个选项

添加外部组(它可以是捕获或非捕获,在 AngularJS 中它无关紧要)将确保开始和结束锚点将应用于整个正则表达式模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM