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

JavaScript代码无法输出含指定亚美尼亚语单词的数组元素问题

问题解决:匹配非ASCII单词无输出的JavaScript代码修复

问题描述

需求是当sentencesRemovedPuncts数组中的元素包含单词“մի՛”时,输出sentences数组对应下标的原句子,但当前代码无任何输出:

var sentences = ["մի՛ գնար՝ ի տուն։", "մի անգամ, գեթ մի․․․։", "Զ՞ինչ մի՛թե է այս։"]
var sentencesRemovedPuncts = ["մի՛ գնար ի տուն", "մի անգամ գեթ մի", "Զինչ միթե է այս"] 
let word = "մի՛"
let key = new RegExp(`\b${word}\b`)
for (let i = 0; i < sentencesRemovedPuncts.length; i++) {
  if (key.test(sentencesRemovedPuncts[i])) {
    console.log(sentences[i])
  }
}

问题原因

JavaScript原生的\b是ASCII单词边界,仅匹配[A-Za-z0-9_]这类ASCII字符与其他字符的边界。而“մի՛”属于亚美尼亚语字符,全是非ASCII范围,\b无法识别其作为单词的边界,导致正则匹配完全失败。

修复方案

方案1:直接检查字符串包含(简单场景)

如果不需要严格匹配整个单词,只是检查目标字符串是否存在,直接用includes方法即可:

var sentences = ["մի՛ գնար՝ ի տուն։", "մի անգամ, գեթ մի․․․։", "Զ՞ինչ մի՛թե է այս։"]
var sentencesRemovedPuncts = ["մի՛ գնար ի տուն", "մի անգամ գեթ մի", "Զինչ միթե է այս"] 
let word = "մի՛"

for (let i = 0; i < sentencesRemovedPuncts.length; i++) {
  if (sentencesRemovedPuncts[i].includes(word)) {
    console.log(sentences[i])
  }
}

输出结果:

մի՛ գնար՝ ի տուն։
Զ՞ինչ մի՛թե է այս։

方案2:Unicode单词边界(精确匹配场景)

如果需要严格匹配整个单词(避免部分字符匹配,比如防止“մի՛թե”被误判),可以使用Unicode属性类结合负向断言实现真正的单词边界,注意要添加正则的u标志以支持Unicode:

var sentences = ["մի՛ գնար՝ ի տուն։", "մի անգամ, գեթ մի․․․։", "Զ՞ինչ մի՛թե է այս։"]
var sentencesRemovedPuncts = ["մի՛ գնար ի տուն", "մի անգամ գեթ մի", "Զինչ միթե է այս"] 
let word = "մի՛"
// (?<!\p{L}) 表示前面不是Unicode字母;(?!\p{L}) 表示后面不是Unicode字母
let key = new RegExp(`(?<!\\p{L})${word}(?!\\p{L})`, 'u')

for (let i = 0; i < sentencesRemovedPuncts.length; i++) {
  if (key.test(sentencesRemovedPuncts[i])) {
    console.log(sentences[i])
  }
}

输出结果:

մի՛ գնար՝ ի տուն։

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:10:36