繁体   English   中英

用于验证名称字段的JavaScript

[英]Javascript to validate a name field

我正在使用Java脚本模式来验证名称,但意识到我真的需要成为模式专家才能解决此问题。 对于由字母组成的名称,该函数应返回true,名称可以由一个或多个用空格或连字符Eg分隔的字母单词组成。 以下是有效名称。

  1. 约翰·费希尔
  2. 约翰·安德鲁·费希尔
  3. 米歇尔·B·杰克逊
  4. 米歇尔·B·杰克逊

米歇尔·米歇尔·B·杰克逊·费希尔

以下是无效名称

  1. micheal B jackson(假设在jackson之后有空白)
  2. micheal(假设m之前有空白)
  3. Micheal /(此人具有非alpha字符)
  4. -micheal-B-Jackson(以连字符开头)
  5. micheal * jackson(具有*个单词,单词只能用-或空格分隔)

我编写了以下函数,只要名称不超过2个用空格或-分隔的单词,就可以正常工作。 但是,现在要求已更改,名称可以包含多个单词。

function isAlpha(field) {
    var lbl = field.name;
    var val = field.value;
    if (val==null || val.length==0) return true;

    //egs of this pattern 1)Rachit Pant 2)R Pant
    var rep1 = /[A-Za-z]+\s[A-Za-z]+/;
    //egs of this pattern 1)Rachit-Pant 2)R-Pant
    var rep2 = /[A-Za-z]+[-][A-Za-z]+/;
    //one or more alpha character
    var rep3 = /[A-Za-z]+/;

    var test1 = val.match(rep1);
    var test2 = val.match(rep2);
    var test3 = val.match(rep3);
    if((test1!=null)){      
        if(test1.length == 1 && test1[0].length == val.length)
            return true;        
    }
    if((test2!=null)){      
        if(test2.length == 1 && test2[0].length == val.length)
            return true;        
    }

    if((test3!=null)){      
        if(test3.length == 1 && test3[0].length == val.length)
            return true;    
    }

    alertMe('GL006',field,field);
    return false;

}

试试这个正则表达式: ^[a-zA-Z]+(?:[ -][a-zA-Z]+)*$ 关于您的JavaScript代码:您无需使用match函数, test就足够了,像这样:

var regExp = /^[a-zA-Z]+(?:[ -][a-zA-Z]+)*$/;
return regExp.test(val);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM