我通过正则表达式检查“AA8187517”
字符串时出现错误:
if (/^[a-z0-9]*$/i.test(value))
我突然在控制台中看到了什么?
> value.split('').filter(function(el){ return el != '' })
< (11) ["", "A", "A", "8", "1", "8", "7", "5", "", "1", "7"]
数组中这两个值是什么?
最佳答案
数组中的两个“空”值包含字符 8207(十进制),即 200f(十六进制)。
U+200F 是 Unicode 中的从右到左标记,是一种(不可见的)标记,可更改文本的显示方向。
以下是您的问题的重现以及用于删除字符的示例代码:
let value = "\u200FAA81875\u200F17";
console.log(value.split('').map(function (x) { return x.charCodeAt(0); }));
value = value.replace(/\u200F/g, '');
console.log(/^[a-z0-9]*$/i.test(value));
关于javascript - 空值其实不就是空吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55784221/