在尝试格式化一串文本时,我正在寻找JavaScript / Regex的一些帮助。 我有以下ID:
00A1234/A12
0A1234/A12
A1234/A12
000A1234/A12
我正在寻找一种可以将所有这些修剪到1234/A12
的方法。从本质上讲,它应该找到左边的第一个字母,并删除它和任何前面的数字,以便最终格式应为0000/A00
或0000/AA00
。
有没有一种有效的方法可以通过Javascript实现?我现在正在看Regex。
答案 0 :(得分:2)
您可以搜索前导数字和后续字母。
var data = ['00A1234/A12', '0A1234/A12', 'A1234/A12', '000A1234/A12'],
regex = /^\d*[a-z]/gi;
data.forEach(s => console.log(s.replace(regex, '')));

或者您可以使用String#slice
代替最后8个字符。
var data = ['00A1234/A12', '0A1234/A12', 'A1234/A12', '000A1234/A12'];
data.forEach(s => console.log(s.slice(-8)));

答案 1 :(得分:1)
不要专注于你想剥离的东西,而是看看你想要得到什么:
/\d{4}\/[A-Z]{1,2}\d{2}/
var str = 'fdfhfjkqhfjAZEA0123/A45GHJqffhdlh';
match = str.match(/\d{4}\/[A-Z]{1,2}\d{2}/);
if (match) console.log(match[0]);

答案 2 :(得分:0)
这样的正则表达式将捕获所有示例,并为您感兴趣的位编号捕获组
[0-9]*[A-Z]([0-9]{4}/[A-Z]{1,2}[0-9]{2})
var input = ["00A1234/A12","0A1234/A12","A1234/A12","000A1234/A12"];
var re = new RegExp("[0-9]*[A-Z]([0-9]{4}/[A-Z]{1,2}[0-9]{2})");
input.forEach(function(x){
console.log(re.exec(x)[1])
});
答案 3 :(得分:0)
您可以使用此功能。使用正则表达式找到第一个字母,然后在该索引之后创建一个子字符串。
function getCode(s){
var firstChar = s.match('[a-zA-Z]');
return s.substr(s.indexOf(firstChar)+1)
}
getCode("00A1234/A12");
getCode("0A1234/A12");
getCode("A1234/A12");
getCode("000A1234/A12");