gpt4 book ai didi

javascript - 如何使用正则表达式来验证中文输入?

转载 作者:搜寻专家 更新时间:2023-11-01 05:21:05 25 4
gpt4 key购买 nike

问题是我需要在客户端验证中将这种中文输入视为无效:

当任何英文字符与任何汉字和空格混合的总长度>=10时,输入无效。

假设:“你的ahi的ahi的ahi”或“你的你的你的你”(长度为10)无效。但是“你的啊你的啊你的a”(长度为9)是可以的。

我同时使用 Javascript 进行客户端验证,同时使用 Java 进行服务器端验证。所以我想在两者上应用正则表达式应该是完美的。

谁能给出一些如何用正则表达式编写规则的提示?

最佳答案

来自 What's the complete range for Chinese characters in 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 block CJK Unified IdeographsCJK Unified Ideographs Extension A 的代码点。

此正则表达式将匹配这 2 个 CJK block 中的 0 到 9 个空格、表意空格 (U+3000)、A-Z 字母或代码点。

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

表意文字列于:

但是,您也可以添加更多 block 。


代码:

function has10OrLessCJK(text) {
return /^[ A-Za-z\u3000-\u303F\u3400-\u4DBF\u4E00-\u9FFF]{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>

关于javascript - 如何使用正则表达式来验证中文输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40099273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com