我使用java脚本模式来验证名称,但意识到我真的需要成为模式专家来解决这个问题。 对于由字母组成的名称,该函数应返回true,名称可以由一个或多个由空格或连字符分隔的alpha字组成 例如。以下是有效名称。
Micheal Micheal-B-Jackson-Fisher
以下是无效名称
我编写了以下函数,只要该名称不是由空格或 - 分隔的超过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;
}
答案 0 :(得分:1)
试试这个正则表达式:^[a-zA-Z]+(?:[ -][a-zA-Z]+)*$
。
关于你的javascript代码:你不需要使用match
函数,test
就足够了,就像这样:
var regExp = /^[a-zA-Z]+(?:[ -][a-zA-Z]+)*$/;
return regExp.test(val);