我正在编写一些处理网站内容的 javascript。当用户按下退格键时,SharePoint 文本编辑器倾向于在文本中放置“零宽度空格”字符,这阻碍了我的努力。字符的 unicode 值为 8203,或十六进制的 B200。我试图使用默认的“替换”功能来摆脱它。我尝试了很多变体,但没有一个起作用:
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 个字符的内容,并且您的光标会在中间跳过一个步骤。