You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript正则表达式:含特殊字符与变音符号的句子分词需求

在JavaScript中正确拆分句子为单词与独立特殊字符

你的问题核心在于原正则的\b(单词边界)仅支持ASCII字符,无法正确识别Unicode变音符号,同时也没处理特殊字符的单独拆分需求。要解决这个问题,用match配合Unicode兼容的正则比split更直接可靠。

解决方案代码

const sentence = "This is: dragée/ (my) test? one sentence.";
const tokens = sentence.match(/[\p{L}\p{M}]+|[^\p{L}\p{M}\s]/gu);
console.log(tokens);
// 输出: ['This', 'is', ':', 'dragée', '/', '(', 'my', ')', 'test', '?', 'one', 'sentence', '.']

正则逻辑解释

  • [\p{L}\p{M}]+:匹配一个或多个Unicode字母(\p{L})和标记字符(\p{M}),确保带变音符号的单词(比如dragée)被完整识别,不会被拆分。
  • |:逻辑或,匹配两种规则之一。
  • [^\p{L}\p{M}\s]:匹配任意非字母、非标记、非空白的单个字符,保证每个特殊符号(:, /, (等)都被单独拆分出来。
  • g:全局匹配,遍历整个字符串找到所有符合规则的内容。
  • u:启用Unicode模式,让正则正确解析非ASCII字符(比如变音符号、特殊语言字母)。

扩展说明

如果需要把数字也纳入“单词”范畴,只需在正则的单词匹配部分加入\p{N}(Unicode数字):

const tokensWithNumbers = sentence.match(/[\p{L}\p{M}\p{N}]+|[^\p{L}\p{M}\p{N}\s]/gu);

内容的提问来源于stack exchange,提问作者devVue123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 21:45:17