使用各种分隔符拆分字符串,同时保留分隔符

Split string with various delimiters while keeping delimiters

我有以下字符串:

"dogs@cats^horses^fish!birds"

如何取回以下数组?

['dogs','@cats','^horses','^fish','!birds']

本质上,我试图在保留分隔符的同时拆分字符串。我试过 string.match 没有用。

假设这些是您唯一的分隔符,那么您可以这样做:

var string = "dogs@cats^horses^fish!birds";
string.replace(/(@|\^|!)/g, '|').split('|');

我们基本上添加了我们自己的分隔符,在这种情况下 | 并以此为基础拆分它。

这就是你想要的:

str.match(/((^|[^\w])\w+)/g)

虽然没有更多的测试用例,但很难说它有多可靠。

这还假设有大量可能的分隔符。如果它是一个小的固定数量,Samer 的解决方案将是一个很好的方法