Javascript 比较两个外观相同的字符串时返回false

Javascript 比较两个外观相同的字符串时返回false,javascript,regex,Javascript,Regex,我使用Node.js脚本进行抓取,我注意到其中一个抓取的字符串没有通过正则表达式。正则表达式在这里并不重要,但行为奇怪的字符串,如下示例: var scrapedData = '1111 test1' var myData = '1111 test1' scrapedData === myData false 现在,如果在scrapedData中手动删除1111和test1之间的空格,然后输入空格,则一切正常 var scrapedData = '1111 test1' // manuall

我使用Node.js脚本进行抓取,我注意到其中一个抓取的字符串没有通过正则表达式。正则表达式在这里并不重要,但行为奇怪的字符串,如下示例:

var scrapedData = '1111 test1'
var myData = '1111 test1'
scrapedData === myData

false
现在,如果在scrapedData中手动删除1111和test1之间的空格,然后输入空格,则一切正常

var scrapedData = '1111 test1' // manually deleted and then added space
var myData = '1111 test1'
scrapedData === myData

true
所以我猜
scrapedData
包含一些破坏正则表达式的隐藏字符,这可能与编码有关(使用utf-8)?是否可以用单个空格字符替换它?

也许这有助于:

尝试使用escape查看实际字符。例如:

escape('1111 test1')

如果字符实际上是一个空格,则应返回“1111%20test1”。

标题很荒谬。正如您还指出的,字符串并不完全相同。可能有一些控制字符,您可以也应该在正则表达式中检查它们。因此,请检查它是否真的是一个空格:
console.log(scrapedData.charCodeAt(4))
您可以使用
scrapedData.charCodeAt(i)
检查字符串中的字符。我认为最好是编码。太好了!刮取的数据返回“1111%A0test1”,而myData返回“1111%20test1”。那么这%A0字符是什么呢?我最后用这个str.replace(/\s+/g,”)修复了这个问题;%A0是非中断空间,而%20是空间。