我需要一个正则表达式来从字符串中提取数字字符串 字符串看起来像这样:
B01234567XXXX
B始终为B,而XXXX可以是任何数字:数字,符号,字母
但数字始终为8位数字。
示例:
B01234567ABCD output: 01234567
B012345678901 output: 01234567
B01234567¿☺♥◘ output: 01234567
B01234567XXXX output: 01234567
B0123456787@X output: 01234567
这是条形码读取器功能的一部分,如果字母在提到的格式中,则为ID,否则为条形码,因此无论如何都应该是输出,这意味着 B012345670020作为输入 但输出仍应为01234567
在Google上浏览后我尝试过的操作:
if (vm.BarcodeInput[0]=='B') {
let regex = /\d{8}\g;
let found = vm.BarcodeInput.match(regex);
}
我正在寻找一种更好看的方式, 我希望我足够清楚。
答案 0 :(得分:2)
在帖子中添加了更新的示例后,就可以使用此正则表达式了,
B(\d{8})
仅捕获以B
字符开头的八位数字。
var match = /B(\d{8})/.exec("B012345678");
if (match != null) {
console.log(match[1]);
} else {
console.log("Doesn't match")
}
答案 1 :(得分:1)
您可以尝试
let str = "B01234567TXXX";
let reg = /(?<=B)\d{8}/g
console.log(str.match(reg));
console.log("B012345670020".match(reg));