我正在编写一些处理网站内容的 JavaScript。然而,SharePoint 文本编辑器的倾向性阻碍了我的努力,因为当用户按下退格键时,文本编辑器会在文本中插入“零宽度空格”字符。
该字符的 Unicode 值为 8203 或十六进制值 B200。我尝试使用默认的“replace”函数将其删除,但是无论尝试多少个变体,都没有奏效。
var a = "om"; //the invisible character is between o and m
var b = a.replace(/\u8203/g,'');
= a.replace(/\uB200/g,'');
= a.replace("\\uB200",'');
等等,诸如此类的东西。我尝试了许多与这个主题相关的表达方式。这些表达方式都不起作用(在Chrome和Firefox中测试)。唯一起作用的是在表达式中键入实际字符:
var b = a.replace("",''); //it's there, believe me
这可能会带来问题。由于该字符是不可见的,所以那一行本身并没有意义。我可以通过注释来解决这个问题。但如果代码被重用,并且文件使用非Unicode编码保存(或者当它部署到SharePoint时,无法保证它不会弄乱编码),它将停止工作。有没有办法使用unicode符号代替字符本身来编写这个字符?
[我对这个字符的胡言乱语]
如果你还没有遇到过这个字符(你很可能没有遇到过,因为它对肉眼是不可见的,除非它破坏了你的代码并在尝试查找错误时发现了它),它是一个真正的混蛋,会导致某些类型的模式匹配失效。我已经为你关起了这只野兽:
[] <- 小心,不要让它逃脱。
如果您想看到它,请将这些括号复制到文本编辑器中,然后迭代光标穿过它们。您会注意到,您需要三个步骤才能通过看起来像2个字符的内容,而且在中间,光标会跳过一步。