Javascript 奇怪的空格字符可以';不可匹敌

Javascript 奇怪的空格字符可以';不可匹敌,javascript,regex,unicode,Javascript,Regex,Unicode,我被困在这里,有人能帮我解开这个谜吗 var t1 = "an excellence award can"; var t2 = "an excellence award can"; var r1 = t1.match('excellence award', 'gi'); var r2 = t2.match('excellence award', 'gi'); console.log(r1); // null (can't find it) console.log(r2); // [...] (

我被困在这里,有人能帮我解开这个谜吗

var t1 = "an excellence award can";
var t2 = "an excellence award can";
var r1 = t1.match('excellence award', 'gi'); 
var r2 = t2.match('excellence award', 'gi');
console.log(r1); // null (can't find it)
console.log(r2); // [...] (find it)
据我观察,
t1
在“卓越”和“奖励”之间有一个奇怪的空格字符,这使得regex无法匹配“卓越奖”。我复制了
t1
并制作了
t2
,然后我简单地删除了那个空格并手动将它放回,然后它匹配了

很明显,这个空间有点问题,但我不知道是什么原因。以下是JSFIDLE:


提前感谢

您的字符串包含不间断空格,您可以很容易地在中找到它

使用
\s
速记字符类来匹配任何空格,包括不间断空格
\u00A0

var t1=“卓越奖可以”//此处,\u00A0介于e和a之间
var t2=“卓越奖可以”//这是一个常规的ASCII空间
var rx=/excellence\saward/gi;
var r1=t1.匹配(rx);
var r2=t2.匹配(rx);
控制台日志(r1);

控制台日志(r2)在十六进制编辑器中查看代码。在第一个字符串中,您有一个不可破坏的空格(
0xa0
),而不是一个普通空格(
0x20


在正则表达式中使用
\s
而不是文本空格来避免此问题(除非需要区分空格、制表符和换行符)。

这是一个常规的不间断空格,
\xA0
。使用
\s
匹配它。就是这样。更新了小提琴。我会在6分钟内接受这个。谢谢