簡體   English   中英

如何使用正則表達式來驗證中文輸入?

[英]How to use regular expression to validate Chinese input?

問題是我需要在客戶端驗證中將此類中文輸入視為無效:

任何與任何中文字符和空格混合的英文字符總長度> = 10時,輸入無效。

讓我們說:“你的是你的你的你”或“你的你的你的你”(長度為10)無效。 但是“你的是你的一個人”(長度為9)是可以的。

我使用Javascript進行客戶端驗證,使用Java進行服務器端。 所以我認為在兩者上應用正則表達式應該是完美的。

任何人都可以提供一些提示如何在正則表達式中編寫規則?

來自Unicode的中文字符的完整范圍是什么? ,CJK unicode范圍是:

Block                                   Range       Comment
--------------------------------------- ----------- ----------------------------------------------------
CJK Unified Ideographs                  4E00-9FFF   Common
CJK Unified Ideographs Extension A      3400-4DBF   Rare
CJK Unified Ideographs Extension B      20000-2A6DF Rare, historic
CJK Unified Ideographs Extension C      2A700–2B73F Rare, historic
CJK Unified Ideographs Extension D      2B740–2B81F Uncommon, some in current use
CJK Unified Ideographs Extension E      2B820–2CEAF Rare, historic
CJK Compatibility Ideographs            F900-FAFF   Duplicates, unifiable variants, corporate characters
CJK Compatibility Ideographs Supplement 2F800-2FA1F Unifiable variants
CJK Symbols and Punctuation             3000-303F

您可能希望允許來自Unicode塊CJK Unified IdeographsCJK Unified Ideographs Extension A的代碼點。

此正則表達式將匹配0到9個空格,表意空間(U + 3000),AZ字母或這兩個CJK塊中的代碼點。

/^[ A-Za-z\u3000\u3400-\u4DBF\u4E00-\u9FFF]{0,9}$/

表意文字列於:

但是,您可以添加更多塊。


碼:

 function has10OrLessCJK(text) { return /^[ A-Za-z\ \㐀-\䶿\一-\鿿]{0,9}$/.test(text); } function checkValidation(value) { var valid = document.getElementById("valid"); if (has10OrLessCJK(value)) { valid.innerText = "Valid"; } else { valid.innerText = "Invalid"; } } 
 <input type="text" style="width:100%" oninput="checkValidation(this.value)" value="你的a你的a你的a"> <div id="valid"> Valid </div> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM