希望使用javascript / regex修剪字符串

时间:2016-09-21 15:03:56

标签: javascript regex

在尝试格式化一串文本时,我正在寻找JavaScript / Regex的一些帮助。 我有以下ID:

00A1234/A12
0A1234/A12
A1234/A12
000A1234/A12

我正在寻找一种可以将所有这些修剪到1234/A12的方法。从本质上讲,它应该找到左边的第一个字母,并删除它和任何前面的数字,以便最终格式应为0000/A000000/AA00

有没有一种有效的方法可以通过Javascript实现?我现在正在看Regex。

4 个答案:

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