Javascript jqueryvalidate:如何对中文和英文字符的用户名最小长度进行不同的验证?
我正在使用jQuery.validate插件来验证用户注册表的输入 我已经完成了简单的案例(确保用户名至少为6个字符) 我想对上述规则添加一个警告,即允许至少2个汉字或6个常规字符通过长度测试。(这对于中国用户来说是很好的可用性,他们中的许多人在现实生活中有2-3个汉字名称) 例如,我希望以下名称通过长度测试: "张三" “迈克尔” 和以下名称失败(由于太短) "张" “迈克” 如何编写自定义javascript函数来检查这些条件?您可以使用i来执行此测试:Javascript jqueryvalidate:如何对中文和英文字符的用户名最小长度进行不同的验证?,javascript,jquery,jquery-validate,cjk,Javascript,Jquery,Jquery Validate,Cjk,我正在使用jQuery.validate插件来验证用户注册表的输入 我已经完成了简单的案例(确保用户名至少为6个字符) 我想对上述规则添加一个警告,即允许至少2个汉字或6个常规字符通过长度测试。(这对于中国用户来说是很好的可用性,他们中的许多人在现实生活中有2-3个汉字名称) 例如,我希望以下名称通过长度测试: "张三" “迈克尔” 和以下名称失败(由于太短) "张" “迈克” 如何编写自定义javascript函数来检查这些条件?您可以使用i来执行此测试: function returnMin
function returnMinLength(){
var browserLanguage = jQuery.i18n.browserLang();
if (browserLanguage == "zh") // zh stands for chinese (I'm not sure)
return 2;
else
return 6;
}
然后,在您的函数中:
rules: {
"user[name]": {
required: true,
minlength: returnMinLength(),
remote:"/check_name"
}, ...
问候。类似于:
function validate(string) {
var re = /^[\u3300-\u9fff\uf900-\ufaff]{2,}$/;
return string.length >= 6 || string.match(re);
}
validate("pat")
validate("patate")
validate("中")
validate("中国")
有关详细信息,请参见Unicode路线图[1]
[1] 比如“Lee,“少于六个字符?相信你的用户正确输入他们的名字,并检查他们没有留下一个空白字段,怎么样?哦,我想很多中国人都有一个1个字符的名字。@David Thomas说得很好。我注意到大多数注册表单的minlength设置为至少4-6,这让我觉得允许使用诸如“aa”之类的名称是不好的形式,但你的问题确实让我在用户体验设计上三思。谢谢。其他语言可以使用中文字符(如日语),可能需要两个字符的名称。中国人可能会使用英语浏览器(例如)。除此之外,我同意大卫·托马的观点。如果你真的想这样做(同样,这看起来不是一个很好的主意),你应该检查字符。好的。检查输入是否为中文(它在一系列unicodes上进行测试):不理解脚本。为什么有两个Regexp而不是只有一个?为什么有一个范围,如果“私人用户区”?我想说:^[\u3300-\u9fff\uf900-\ufaff]*$你可能想包括平假名/片假名(如果你想包括日语)和韩语(韩语)。谢谢你的回答!自定义检查功能,而不是动态计算minlength:更适合我的特定场景。谢谢,这(几乎)正是我想要的。理想情况下,正则表达式也会排除奇怪的字符(并且只允许字母、数字和汉字,而不允许空格或类似的奇怪符号)@#$@
function validate(string) {
var re = /^[\u3300-\u9fff\uf900-\ufaff]{2,}$/;
return string.length >= 6 || string.match(re);
}
validate("pat")
validate("patate")
validate("中")
validate("中国")