我接受用户输入(JS代码)并实时执行(处理)它们以显示一些输出。
有时代码具有零宽度的空间,这真的很奇怪。我不知道用户是如何输入的。范例-“($".length === 3
我需要能够从JS代码中删除该字符。我该怎么做?还是有其他方法可以执行该JS代码,以使浏览器不考虑零宽度空格字符?
我接受用户输入(JS代码)并实时执行(处理)它们以显示一些输出。
有时代码具有零宽度的空间,这真的很奇怪。我不知道用户是如何输入的。范例-“($".length === 3
我需要能够从JS代码中删除该字符。我该怎么做?还是有其他方法可以执行该JS代码,以使浏览器不考虑零宽度空格字符?
Answers:
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的控制字符。
var HTMLe=document.getElementsByTagName('html')[0]; HTMLe.outerHTML = HTMLe.outerHTML.replace(/[\u200B-\u200D\uFEFF\u200E\u200F]/g, '');
...就是这样
var s = "\ud83d\ude0d\ud83d\ude0d\ud83d\ude0d\ud83d\ude0d\ud83d\ude0d\ud83d\ude0d\ud83d\ude0d\ud83d\ude0d\ud83d\ude0d\ud83d\ude18\ud83d\ude18\ud83d\ude18"
<-包含实际的\ u200c和d
我有一个问题,一些不可见的字符损坏了我的JSON,并导致意外令牌ILLEGAL异常,这使我的网站崩溃了。
这是我使用RegExp变量的解决方案:
var re = new RegExp("\u2028|\u2029");
var result = text.replace(re, '');
有关Javascript和零宽度空间的更多信息,请参见: 零宽度空间
h
,然后传输的是,然后是元数据凭据字符串,然后是i
。但是来源和目的只是显示这个词hi
。要将这些零宽度的野蛮人及其波斯信使挡在斯巴达护城河之外,将是一场艰苦的努力。伤心!
[].filter.call( str, function( c ) {
return c.charCodeAt( 0 ) !== 8203;
} );
过滤每个字符以删除8203字符代码(零宽度空格unicode号)。
[].filter.call(strVal, c => c.charCodeAt() !== 8203).join('')
str.replace(/\u200B/g,'');
200B是零宽度空间8203的十六进制。将其替换为空字符串以删除此字符