拆分混合描述标签和文本



我有一个类似的字符串

var string = "#developers must split #hashtags";

我想在单词以#symbol 开头时将其拆分

我试过这两个例子

var example1 = string.split(/(?=#)/g);
//result is ["#developers must split ", "#hashtags"]
var example2 = string.split(/(?:^|[ ])#([a-zA-Z]+)/g);
// result is ["", "developers", "must split", "hashtags", ""]

结果必须看起来像这个

var description = ["#developers", "must split", "#hashtags"]

JSFiddle示例

我有一个解决方案,但它有点长,我想用regex缩短它。谢谢你,

拆分时,捕获的组将包含在拆分结果数组中。因此,您可以捕获#word分隔符,并使用类似s*(#S+)s*的表达式省略分隔符前后的空格。通过对测试每个字符串的真实性的表达式(例如:x => x(执行filter,可以省略空字符串。

let result = "#developers must split #hashtags".split(/s*(#S+)s*/g).filter(x => x);
console.log(result);

最新更新