求真实姓名的正则表达式?
要求:真实姓名可以是汉字,也可以是字母,但是不能两者都有,也不能包含任何符号和数字
注意:如果是英文名,可以允许英文名字中出现空格,甚至是多个,但是不是连续的多个空格
这个用正则该怎么写?

解决方案 »

  1.   

    [\u4E00-\u9FFF]{2, 4} | ([a-zA-Z]+\s)+[a-zA-Z]+
      

  2.   

    bool valid = Regex.IsMatch(name,@"([\u4E00-\u9FFF]+)|([A-Z][a-z]*( |$))+");
      

  3.   

    优化一下,取消分组增加效率bool valid = Regex.IsMatch(name,@"(?in)([\u4E00-\u9FFF]+)|([A-Z][a-z]*( |$))+");如果不限制名字每个单词第一个字母大写,可以这样bool valid = Regex.IsMatch(name,@"(?in)([\u4E00-\u9FFF]+)|([a-z]+( |$))+");
    显然甘草大神的是写完整的了。不过楼主貌似没要求汉字个数,符号只包含空格。我只是稍微优化一下。而且,我太喜欢正则了。正则的帖子必回…
      

  4.   

    /*真是姓名格式:只能是汉字或者英文,汉字之间不能出现空格,英文可以出现非连续的空格*/ 
    function RealName(str)
    {
    var re = /^([\u4e00-\u9fa5]+|([a-zA-Z]+\s?)+)$/;
    var result=str.match(re);
    if(result)
    return true;
    else
    return false;
    }这样貌似可以啊