JavaScript-提取两个字符之间的数字字符串的最佳方法

时间:2018-12-03 06:38:08

标签: javascript regex string

我需要一个正则表达式来从字符串中提取数字字符串 字符串看起来像这样:

  

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

}

我正在寻找一种更好看的方式, 我希望我足够清楚。

2 个答案:

答案 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));

Demo