我接受用户输入(JS代码)并实时执行(处理)它们以显示一些输出。

有时代码具有零宽度的空间,这真的很奇怪。我不知道用户是如何输入的。范例-“(​$".length === 3
我需要能够从JS代码中删除该字符。我该怎么做?还是有其他方法可以执行该JS代码,以使浏览器不考虑零宽度空格字符?

最佳答案

Unicode具有以下零宽度字符:

  • U + 200B零宽度空间
  • U + 200C零宽度非联合Unicode代码点
  • U + 200D零宽度连接器Unicode代码点
  • U + FEFF零宽度不间断空格Unicode代码点

  • 要从JavaScript中的字符串中删除它们,可以使用一个简单的正则表达式:
    var userInput = 'a\u200Bb\u200Cc\u200Dd\uFEFFe';
    console.log(userInput.length); // 9
    var result = userInput.replace(/[\u200B-\u200D\uFEFF]/g, '');
    console.log(result.length); // 5
    

    请注意,还有许多其他符号可能不可见。例如,一些ASCII’s control characters

    关于javascript - 从JavaScript字符串中删除零宽度空格字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11305797/

    10-10 18:21