首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个regex模式没有传入exec方法?

为什么这个regex模式没有传入exec方法?
EN

Stack Overflow用户
提问于 2017-10-10 04:13:18
回答 2查看 87关注 0票数 1

我有一个刷卡,我正在创建一个现场Kioske,需要预先填写一个信用卡表格,然后刷卡。我不知道为什么它没有识别任何卡片。下面是一个滑动的例子:

代码语言:javascript
复制
%B5500005555555559"TORRANCEJACK G P        "2009206000000000000326000000

有人能解释为什么它没有传递下面的regex模式exec吗?

代码语言:javascript
复制
// MasterCard starts with 51-55, and is 16 digits long.
var pattern = new RegExp("^%B(5[1-5][0-9]{14})\\^([A-Z ]+)/([A-Z ]+)\\^([0-9]{2})([0-9]{2})");
var match = pattern.exec(rawData);

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-10 09:09:05

我建议您使用以下模式:

代码语言:javascript
复制
/%B(5[1-5][0-9]{14})"([A-Z ]+?)\s+"([0-9]{2})([0-9]{2})/

regex演示。注意,您必须对最后一个([0-9]{2})([0-9]{2})组进行微调,才能将正确的数字转换为所需的组数。

JS演示:

代码语言:javascript
复制
var rx = /%B(5[1-5][0-9]{14})"([A-Z ]+?)\s+"([0-9]{2})([0-9]{2})/g;
var s = '%B5500005555555559"TORRANCEJACK G P        "2009201800000000000326000000';
var matches = rx.exec(s);
if (matches) {
 console.log("Number: " + matches[1]); // => number
 console.log("Name: " + matches[2]); // => name
 console.log("Exp. year: " + matches[3]); // => exp year
 console.log("Exp. month: " + matches[4]); // => exp month
}

票数 1
EN

Stack Overflow用户

发布于 2017-10-10 04:50:10

从这里找到的这里

代码语言:javascript
复制
^(?:5[1-5][0-9]\d{1}|222[1-9]|2[3-6][0-9]\d{1}|27[01][0-9]|2‌​720)([\ \-]?)\d{4}\1\d{4}\1\d{4}$

不确定您的regex工作情况,但在那个斜线/上对我说了错误

Regex测试仪中测试这个正则表达式,这是有效的

我还从这里那里找到了有用的东西

如果你需要真正的程序来证明它的工作,我为你做,如果你需要用片段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46658510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档