Javascript 和 regex:拆分字符串并保留分隔符

2022-08-30 01:32:55

我有一个字符串:

var string = "aaaaaa<br />&dagger; bbbb<br />&Dagger; cccc"

我想用分隔符后跟一个特殊字符来拆分这个字符串。<br />

为此,我正在使用这个:

string.split(/<br \/>&#?[a-zA-Z0-9]+;/g);

我得到了我需要的东西,除了我失去了分隔符。下面是示例:http://jsfiddle.net/JwrZ6/1/

如何保留分隔符?


答案 1

我有类似但略有不同的问题。无论如何,以下是三种不同场景的示例,用于放置解调器的位置。

"1、2、3".split("、") == ["1", "2", "3"]
"1、2、3".split(/(、)/g) == ["1", "、", "2", "、", "3"]
"1、2、3".split(/(?=、)/g) == ["1", "、2", "、3"]
"1、2、3".split(/(?!、)/g) == ["1、", "2、", "3"]
"1、2、3".split(/(.*?、)/g) == ["", "1、", "", "2、", "3"]

警告:第四个仅用于拆分单个字符。ConnorsFan提出了另一种选择

// Split a path, but keep the slashes that follow directories
var str = 'Animation/rawr/javascript.js';
var tokens = str.match(/[^\/]+\/?|\//g);

答案 2

使用(正)前瞻,以便正则表达式断言特殊字符存在,但实际上与它不匹配:

string.split(/<br \/>(?=&#?[a-zA-Z0-9]+;)/g);

查看实际操作:

var string = "aaaaaa<br />&dagger; bbbb<br />&Dagger; cccc";
console.log(string.split(/<br \/>(?=&#?[a-zA-Z0-9]+;)/g));