我刷卡,我正在创建一个现场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);
谢谢!
答案 0 :(得分:0)
从这里找到它Here
^(?:5[1-5][0-9]\d{1}|222[1-9]|2[3-6][0-9]\d{1}|27[01][0-9]|2720)([\ \-]?)\d{4}\1\d{4}\1\d{4}$
不确定您的正则表达式是否正常工作,但在斜杠/
在Regex Tester这个正在运行的
中测试这个正则表达式我也从here
找到了有用的东西如果你需要真正的程序来证明有效,我会在你需要的时候为你制作
答案 1 :(得分:0)
我建议您使用以下模式:
/%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
}