3 回答
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}]- 单个标点符号或符号字符。
请参阅此正则表达式演示。
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
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);
您可以使用您感兴趣的每个分隔符进行替换,以便它的每一侧都有一个空格,然后使用它来分割并返回一个数组。
添加回答
举报
