Javascript 和正则表达式:拆分字符串并保留分隔符

新手上路,请多包涵

我有一个字符串:

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

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

为此,我正在使用这个:

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

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

我怎样才能保留分隔符?

原文由 Milos Cuculovic 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 977
2 个回答

我遇到了类似但略有不同的问题。无论如何,这里是关于在何处保留分隔符的三种不同情况的示例。

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

原文由 jichi 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

 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));

原文由 Jon 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题