javascript - 为什么这个正则表达式模式没有传入 exec 方法?

标签 javascript regex

我需要刷卡,我正在创建一个现场 Kioske,需要在刷卡后预填一张信用卡表格。我不确定为什么它无法识别任何卡片。这是一个滑动示例:

%B5500005555555559"TORRANCEJACK G P        "2009206000000000000326000000

有人可以解释为什么它没有通过以下正则表达式模式 exec 吗?

// 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);

谢谢!

最佳答案

我建议您使用以下模式:

/%B(5[1-5][0-9]{14})"([A-Z ]+?)\s+"([0-9]{2})([0-9]{2})/

参见 regex demo .请注意,您必须微调最后的 ([0-9]{2})([0-9]{2}) 组,以便将正确的数字放入必要数量的组中。

JS 演示:

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
}

关于javascript - 为什么这个正则表达式模式没有传入 exec 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46658510/

相关文章:

javascript - Vue js如何防止href默认行为更改URL名称

javascript - jQuery:同时淡入和淡出

javascript - 如何在更改检测后重置 Angular2 中的 ViewContainerRef?

Python正则表达式删除破折号之间的捕获电子邮件或忽略以.jpg等结尾的电子邮件

javascript - C++/CX : Defining public void at namespace scope

javascript - 将脚本从内部存储注入(inject)到 cordova inappbrowser

regex - 一元自然数的匹配范围

python - 如何提取与文本文件中的正则表达式匹配的行号

jQuery:用 .each() 替换字符串

android - 如何识别编辑文本中的初始空格?