用于验证名称字段的Javascript

时间:2013-12-20 17:02:08

标签: javascript regex

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

  1. John Fisher
  2. John Andrew Fisher
  3. Micheal B Jackson
  4. 迈克尔-B-杰克逊
  5. Micheal Micheal-B-Jackson-Fisher

    以下是无效名称

    1. micheal B jackson(假设杰克逊之后有空格)
    2. micheal(假设m之前有空格)
    3. Micheal /(这个有非alpha字符)
    4. -micheal-B-Jackson(以连字符开头)
    5. micheal * jackson(有*单词,单词只能用 - 或空格分隔)
    6. 我编写了以下函数,只要该名称不是由空格或 - 分隔的超过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;
      
      }
      

1 个答案:

答案 0 :(得分:1)

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

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