今天日文版本項目中用戶名校驗有一個這樣的需求:“匹配1-15位的 半角 英文字母和數(shù)字,連字符,下劃線與 全角 日語”惯悠∈蚺校看到這個需求時感覺還真是變態(tài)哈座每,全角挪鹏、半角的看著很不適應(yīng),無奈在google汗洒、baidu上來查找挖滤。
一崩溪、解決問題
- 首先來看看半角英文字母和數(shù)字的Unicode編碼范圍:
0-9:\u0030-\u0039
A-Z:\u0041-\u005a
a-z :\u0061-\u007a
連字符和下劃線不用多說“-_”
全角日語
這個比較搞人,首先日語中包含部分漢字斩松、日文平假名伶唯、日文片假名。
全部漢字 :\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
全角字符:
全角數(shù)字(0-9) uFF10 – uFF19
全角大英字(A-Z): uFF21 – uFF3A
全角小英字(a-z): uFF41 – uFF5A
全角平仮名:u3040 – u309F全角片仮名:u30A0 – u30FF
全角Latin: uFF01 – uFF5E全角Symbol: uFFE0 – uFFE5