使用正则表达式将数字转换为特定字符串

时间:2018-04-19 14:15:53

标签: javascript regex

我似乎无法理解javascript正则表达式,所以我需要你的帮助!

我需要转换以下内容:

1234567891230

分为:

瓮:EPC:ID:SGLN:12345678.9123.0

我已经使用普通的javascript算法(参见下文),但我们需要能够配置此转换。我只需要它作为默认配置值!

使用切片将是:

var result = "urn:epc:id:sgln:" + myString.slice(0, 8) + "." + 
myString.slice(8, 12) + "." + myString.slice(12);

如果你能在答案中加入解释,我将不胜感激:)

2 个答案:

答案 0 :(得分:3)

如果您想使用正则表达式,请尝试以下操作:



var regex = /(\d{8})(\d{4})/;
var splittedNumber = regex.exec("123456789123");
var result = "urn:epc:id:sgln:"+splittedNumber[1]+"."+splittedNumber[2]+".0";
console.log(result);




但我会推荐你​​已经完成的字符串拆分。

答案 1 :(得分:1)

您可以使用正则表达式捕获1234567891230的3个组,并在开头和结尾使用单词边界\b

然后使用slice,您可以获取所有元素,但忽略match返回的数组中的第一个元素,因为它包含我们不需要的完整匹配。

之后,您可以使用点作为分隔符来join数组中的元素。

\b(\d{8})(\d{4})(\d)\b

let str = "1234567891230";
let prefix = "urn:epc:id:sgln:";
console.log(prefix + str.match(/\b(\d{8})(\d{4})(\d)\b/).slice(1).join("."));