检测双字节字符
Detect Double byte characters
我必须编写一个 JavaScript 函数来验证输入的文本是否为双字节。文本框应仅接受双字节日语字符、双字节英语字符和双字节特殊字符。我尝试使用其他博客中提供的许多解决方案,但验证针对单字节英语或单字节日语字符触发,即验证对单字节英语字符触发良好,对单字节日语失败。
字符可以是单字节、双字节、三字节等。因此,单字节遵循特定范围。其他角色也是如此。基于此,我创建了以下函数,这些函数将根据内存计算字符串的大小
function getByteLength(normal_val) {
// Force string type
normal_val = String(normal_val);
var byteLen = 0;
for (var i = 0; i < normal_val.length; i++) {
var c = normal_val.charCodeAt(i);
byteLen += c < (1 << 7) ? 1 :
c < (1 << 11) ? 2 :
c < (1 << 16) ? 3 :
c < (1 << 21) ? 4 :
c < (1 << 26) ? 5 :
c < (1 << 31) ? 6 : Number.NaN;
}
return byteLen;
}
我创建了一个 js 小提琴,它将根据内存确定输入文本的大小。
http://jsfiddle.net/paraselixir/d83oaa3v/5/
在这里,您可以使用字符串的内存大小来确定双字节 -
因此,如果字符串有 x 个字符并且内存大小为 x,则所有字符都是单个字节如果字符串有 x 个字符,内存大小为 2x,则所有字符都是双字节。如果字符串有 x 个字符并且内存大小在 x 到 2x 之间,则所有字符都是单字节和双字节的组合。
相关文章:
- 在JavaScript中输出转义字符
- 不同浏览器中的空白字符正则表达式行为
- Regex匹配除“”之外的所有字符;.js”;
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 本地存储中的字符串到字节数组转换
- 使用RegExp查找url中的字符
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 允许在文本框中使用某些字符
- 删除错误.MongooDB + Express.传入的参数必须是 12 个字节的单个字符串或 24 个十六进制字符的字符
- 在 .NET 和 JavaScript 中存储一个字符需要多少字节
- 双字节字符文件名未正确显示
- 检测双字节字符
- 基于字节而不是字符计数的 Substr
- 如何使用javascript计算包含UTF8字符的字节长度
- 如何在javascript中使用toString(16)来获得用两个字符编写的字节
- 如何将Javascript字符串转换为八位字节/字符数组
- JS是否总是为每个字符使用两个字节来存储字符串?
- 字符编码- Javascript Blob对象保存为文件包含额外的字节
- 为什么这个代码有超过4个字符的3个八位字节