javascript - 空值其实不就是空吗?

标签 javascript arrays string

我通过正则表达式检查“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"]

console

数组中这两个值是什么?

最佳答案

数组中的两个“空”值包含字符 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/

相关文章:

python - 搜索并计算文本文件中带有特殊字符的特定短语

javascript - 为什么我的 array.join() 不能按预期工作?

javascript - 为 children 挑战 JavaScript。第六章什么是正确答案

android - 应用程序可处理大数组 “stops working”,但仍继续将日志消息打印到AndroidStudio

arrays - 与 Unsplash 合作。无法将类型 'Array<_>' 的值分配给类型 'Any?'

java - 如何将字符串添加到特定位置的其他字符串中

javascript - 为什么这么多 Array.prototype(迭代)方法这么慢?

javascript 在提交时关闭弹出窗口

javascript - 在 ASP.NET MVC 中以编程方式禁用 jQuery 客户端验证

在函数内的堆栈上创建一个结构体,并将其分配给在另一个函数中创建的数组的数组位置