为了账号安全,请及时绑定邮箱和手机立即绑定

将字符串拆分为多个分隔符,同时保留一个或多个分隔符

将字符串拆分为多个分隔符,同时保留一个或多个分隔符

米脂 2023-08-18 16:23:35
有没有一种方法可以根据多个分隔符拆分字符串,同时在拆分数组中保留一些分隔符?"This is a-weird string,right?"所以如果我有我想要的字符串["This", "is", "a", "-", "weird", "string", ",", "right", "?"]我尝试过使用string.split(/([^a-zA-Z])/g),但我不想保留空格。本指南似乎是我可以使用的东西,但我对正则表达式的理解还不够好,不知道如何混合这两者。
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

您可以使用


console.log("This is a-weird string,right?".match(/[^\W_]+|[^\w\s]|_/g))

正则表达式匹配:

  • [^\W_]+- 一个或多个字母数字字符

  • |- 或者

  • [^\w\s]- 除单词和空格之外的任何字符

  • |- 或者

  • _- 下划线。

请参阅正则表达式演示

一个完全支持 Unicode 的正则表达式将是

console.log("This is ą-węird string,right?".match(/[\p{L}\p{M}\p{N}]+|[\p{P}\p{S}]/gu))

这里,

  • [\p{L}\p{M}\p{N}]+- 一个或多个 Unicode 字母、变音符号或数字

  • |- 或者

  • [\p{P}\p{S}]- 单个标点符号或符号字符。

请参阅此正则表达式演示


查看完整回答
反对 回复 2023-08-18
?
弑天下

TA贡献1818条经验 获得超8个赞

这是正则表达式分割方法。我们可以尝试按照以下模式进行拆分:


\s+|(?<=\w)(?=\W)|(?<=\W)(?=\w)

代码片段:


var input = "This is a-weird string,right?";

var parts = input.split(/\s+|(?<=\w)(?=\W)|(?<=\W)(?=\w)/);

console.log(parts);

这是对所使用的正则表达式模式的解释,它表示要分割:


\s+            whitespace

|              OR

(?<=\w)(?=\W)  the boundary between a word character preceding and non word

               character following

|              OR

(?<=\W)(?=\w)  the boundary between a non word character preceding and word

               character following


查看完整回答
反对 回复 2023-08-18
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

尝试这样:


const str = "This is a-weird string,right?";


var arr = str.replace(/(\S)([\,\-])/g, "$1 $2").replace(/([\,\-])(\S)/g, "$1 $2").split(" ");


console.log(arr);


您可以使用您感兴趣的每个分隔符进行替换,以便它的每一侧都有一个空格,然后使用它来分割并返回一个数组。


查看完整回答
反对 回复 2023-08-18
  • 3 回答
  • 0 关注
  • 335 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号