RegEx 字符串拆分和连接 [重复]

问题描述 投票:0回答:2

我正在尝试拆分并重新连接字符串以获取 URI 的片段。

我从一个简单的16个字符的ID开始,我要把它分成8对字符,例如从

0b00271180119cce
0b/00/27/11/80/11/9c/ce/

有什么方法可以仅使用 RegEx 来实现吗?

使用类似的东西

([A-zA-z-0-9]{1,2})
我得到了一个有 8 个匹配项的组,但我不知道如何将它们重新组合成一个带有分隔符的字符串(在这种情况下为“/”)。

提前致谢!

regex string split regex-group
2个回答
1
投票

在替换字符串中使用反向引用。

$&
指的是正则表达式匹配的内容。

let string = '0b00271180119cce';
let new_string = string.replace(/.{1,2}/g, '$&/');
console.log(new_string);


1
投票

给定:

const id = "0b00271180119cce";

使用下面的正则表达式:

const regex = /([A-Z0-9]{2})/ig;
  • 注意:此正则表达式避免了另一个用户对您的问题的评论中提到的重复和不需要的字符,但对于这种情况,
    const regex = /([a-zA-Z0-9]{2})/g;
    也会起作用。

选项一

匹配正则表达式并重新组合成带有分隔符(在这种特定情况下为“/”)的字符串的最简单方法是使用正则表达式

replace
并将匹配的捕获组后跟斜杠插入输出字符串。这是 JavaScript 中的示例:

const result = id.replace(regex, "$1/");
  • 注意:上面使用
    $n
    其中
    n
    是组号

选项2

您还可以使用正则表达式

replace
将函数作为第二个参数来实现此目的:

const result = id.replace(regex, (match, group) => `${group}/`);
  • 注意:如果您只想将匹配或捕获组复制到替换中,那么函数就太过分了,所以请选择选项 1。这只是演示实现目标的另一种方法。

您可以

console.log
两个
result
s来观察所需的输出:

console.log(result); // "0b/00/27/11/80/11/9c/ce/"

const id = "0b00271180119cce";
const regex = /([A-Z0-9]{2})/ig;

let result = id.replace(regex, "$1/");
console.log(result);

result = id.replace(regex, (match, group) => `${group}/`);
console.log(result);

© www.soinside.com 2019 - 2024. All rights reserved.