FED实验室 - 专注WEB端开发和用户体验

Unicode编码及在正则表达式中的使用

JAVASCRIPT 煦涵 4996℃ 0评论

今天日文版本项目中用户名校验有一个这样的需求:“匹配1-15位的半角英文字母和数字,连字符,下划线与全角日语”。看到这个需求时感觉还真是变态哈,全角、半角的看着很不适应,无奈在google、baidu上来查找。

一、解决问题

1. 首先来看看半角英文字母和数字的Unicode编码范围:
0-9:\u0030-\u0039
A-Z:\u0041-\u005a
a-z :\u0061-\u007a

2. 连字符和下划线不用多说“-_”

3. 全角日语
这个比较搞人,首先日语中包含部分汉字、日文平假名、日文片假名。
全部汉字 :\u4E00 - \u9FBF
全角平仮名:\u3040 - \u309F
全角片仮名:\u30A0 - \u30FF
但是这个汉字的Unicode编码还是不太准确的。

综上,可以写出正则表达式来判断:

var pattern = /^[\u0030-\u0039\u0041-\u005a\u0061-\u007a\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FBF\-_]{1,15}$/,
	result  = pattern.test(value);

二、字符范围

半角字符:
半角拉丁字符u0000 - u00FF
半角日语字符uFF61 - uFF9F
半角其他字符uFFE8 – uFFEE

全角字符:
全角数字(0-9) uFF10 - uFF19
全角大英字(A-Z): uFF21 - uFF3A
全角小英字(a-z): uFF41 - uFF5A

全角平仮名:u3040 - u309F
全角片仮名:u30A0 - u30FF

全角Latin: uFF01 - uFF5E
全角Symbol: uFFE0 - uFFE5

三、参考文章:

1. 完整的CJK Unicode范围(5.0版)

2. 全角与半角符号比较(ASCII)

3. Unicode 编码范围和中文编码范围

4. 字符编码笔记:ASCII,Unicode和UTF-8

下面是「FED实验室」的微信公众号二维码,欢迎扫描关注:

FED实验室

行文不易,如有帮助,欢迎打赏!

赞赏支持 喜欢 (0)
捐赠共勉
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(2)个小伙伴在吐槽