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

如何使用jQuery判断DOM元素是否仅包含n-dash(–)字符

如何判断DOM元素是否仅包含n-dash符号

首先明确核心原因:–是HTML实体,对应的实际字符为en dash(短破折号),Unicode编码是U+2013,和普通键盘输入的减号-(Unicode编码U+002D)是完全不同的字符,因此直接比对普通减号必然不匹配。

你之前的4种写法全部返回false的原因分别是:

  • $('p').text()=="-":.text()返回的是解析后的en dash实际字符,和普通减号字符不匹配
  • $('p').html()=="-":.html()的返回值要么是en dash字符,要么是–实体串,不可能返回普通减号
  • $('p').text()=="–":.text()会自动解析HTML实体为实际字符,不会返回实体编码字符串
  • $('p').html()=="–":不同浏览器对.html()的返回处理逻辑有差异,部分浏览器会直接把实体解析为字符返回,不会原样输出–,判断结果不稳定

正确实现方式

方案1:直接匹配Unicode字符(最稳妥)

使用en dash的Unicode转义序列比对,不受文件编码和浏览器差异影响,推荐使用:

// 加trim是为了过滤元素内可能存在的空格、换行等空白字符,避免误判
const isOnlyNdash = $('p').text().trim() === '\u2013'

如果你的项目文件统一使用UTF-8编码,也可以直接写en dash字符本身:

const isOnlyNdash = $('p').text().trim() === '–'

方案2:通过实体转义后比对(兼容性更好)

如果不想硬写Unicode或特殊字符,可以动态创建临时元素把–实体转为实际字符后再比对:

function checkOnlyNdash($target) {
  const ndashChar = $('<i>').html('&ndash;').text()
  return $target.text().trim() === ndashChar
}

// 调用示例
console.log(checkOnlyNdash($('p')))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:24:00