如何验证中文(unicode)和英文名称?

问题描述:

我有一个多语言网站(中文和英文)。如何验证中文(unicode)和英文名称?

我喜欢在javascript中验证文本字段(名称字段)。到目前为止,我有以下代码。

var chkName = /^[characters]{1,20}$/; 

if(chkName.test("[name value goes here]")){ 
    alert("validated"); 
} 

问题是,/^[characters] {1,20} $ /只能匹配英文字符。是否可以匹配ANY(包括Unicode)字符?我曾经使用下面的正则表达式,但我不想在每个字符之间放置空格。

/^(.+){1,20}$/ 
+1

如果提供韩文,日文,越南文或克林贡语的名字,您打算如何处理? – 2011-06-16 19:27:04

+0

你有什么规则? 1-20个字符,无空格。还要别的吗? – roberkules 2011-06-16 19:29:01

+0

@Russell Borogove //这也是我关心的问题。我想验证所有的unicode和英文。 – Moon 2011-06-16 19:31:33

你可以看看Javascript + Unicode regexes,做一些研究,以准确地找到其范围的字符,你想允许:

What's the complete range for Chinese characters in Unicode?

阅读这两个和一点点额外的研究,你应该是后能够找到适当的值来完成类似的事情:/^[-'a-z\u4e00-\u9eff]{1,20}$/i

var chkName = /\s/; 

function check(name) { 

    document.write("<br />" + name + " is "); 

    if (!chkName.test(name)) { 
     document.write("okay"); 
    } else { 
     document.write("invalid"); 
    } 

} 

check("namevaluegoeshere"); 

check("name value goes here"); 

这样你只是检查名称中是否有空白。

演示@http://jsfiddle.net/roberkules/U3q5W/

看看Regex Unicode blocks.

您可以利用此功能CJK姓名的照顾。