繁体   English   中英

为什么 JavaScript String 空白字符不匹配?

[英]Why does the JavaScript String whitespace character   not match?

我在 HTML 中得到了以下结构:

<div id="text">
  some&nbsp;text
</div>

如果我修剪文本并使用以下方法对其进行测试:

$("#text").text().trim() === "some text"

它返回false ,还有:

$("#text").text().trim() === "some&nbsp;text"

返回false ,但是:

/^some\s{1}text$/.test($("#text").text().trim())

返回true 所以请告诉我,这里出了什么问题。

正如您所建议的,我使用的是 jQuery (1.6)。

这是因为no空格(charCode 160)不完全等于空格(charCode 32)

jQuery的.text()将HTML实体编码为直接与Unicode等价,因此&nbsp; 变成String.fromCharCode(160)

您可以通过将所有不间断空格替换为普通空格来解决此问题:

d.text().replace(String.fromCharCode(160) /* no breaking space*/,
         " " /* ordinary space */) == "some text"

或更好:

d.text().replace(/\s/g /* all kinds of spaces*/,
         " " /* ordinary space */) == "some text"

&nbsp; 与空格字符(Unicode U + 0020)不同。 这是一个不间断的空格字符,以Unicode编码为U + 00A0。 这就是为什么您的第一个测试不匹配,而第三个测试匹配的原因。 \\s匹配所有空格字符。

坚持使用正则表达式测试,或在相等性检查中使用\\xa0

$("#text").text().trim() === "some\xa0text";
$("#text").text().trim() === "some\u00a0text";

它没有考虑不可见的“ \\ n”。 摆脱“ \\ n”并使用“ ==”进行检查。

尝试这个

 var x = $("#text").html();
            x = x.replace(/(\r\n|\n|\r)/gm, "");
            x = x.replace(/\s+/g, '');
            alert(x);

            if (x == 'some&nbsp;text') {
                alert('true');
            }
            else {
                alert('false');
            }

希望这可以帮助。

有几个类似的问题。 您可以检查出来。

将jquery .text()匹配为&nbsp; 不间断的空间

如前几篇文章所述。 您可以将“ ==”而不是“ ===”进行比较&nbsp;并使用'\\ xa0'进行比较&nbsp; 这是不间断空格的实际特征。

function containSpecial( str ) 
 {      
var containSpecial = RegExp(/[(\ )(\~)(\!)(\@)(\#)(\$)(\%)(\^)(\&)(\*)(\()(\))(\-)(\_)(\+)(\=)(\[)(\])(\{)(\})(\|)(\\)(\;)(\:)(\`)(\')(\")(\,)(\.)(\/)(\<)(\>)(\?)(\)]+/);
var containSpecial2 = RegExp(/[((\︿)(\’)(\‵)(\!)(\@)(\#)(\%)(\&)(\*)(\+)(\\)(\")(\<)(\>)(\|)(\_)(\[)(\])(\,)(\.)(\¥)(\…)(\()(\))(\—)(\|)(\{)(\})(\【)(\】)(\‘)(\;)(\:)(\”)(\“)(\。)(\、)(\?)]+/);
var ans = false;
if (containSpecial.test(str)){
    ans = true;
}
if (containSpecial2.test(str)){
    ans = true;
}
return ( ans );      }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM