最有可能的是正则表达式验证快速修复

时间:2012-11-15 20:18:21

标签: javascript regex forms validation

我尝试验证表单以使用户输入其全名,如下所示..

  

首先,最后

用户必须有一些字母字符串,然后是逗号,然后是空格,然后是姓氏,也可以是任何字符串。

这是我目前的正则表达式。

var alphaExp = /^[a-zA-Z,+ a-zA-Z]+$/;

但是,它允许用户提交像john一样简单的内容。我希望它强迫他们提交像约翰,史密斯这样的东西。

4 个答案:

答案 0 :(得分:3)

您正在做的是创建一个匹配以下任何字符的字符类([]):a-zA-Z,+。这允许john匹配整个正则表达式。

这就是你想要的:

/^[a-zA-Z]+, [a-zA-Z]+$/

但是,我想告诉你,对名字做出假设是有点不对的。如果有人叫John O'Connor怎么办?还是EstebanPérez?或者只是Ng(只是一个名字)?

  

“认为某人姓名只能包含某些字符的代码是愚蠢,冒犯和错误的” - tchrist

当然,你不想让人们只是进入胡言乱语,但为用户留下一个选项,让他们输入的东西不一定符合你的正确性,但仍然是正确的。

答案 1 :(得分:1)

这不是字符集的工作原理:

/^[a-zA-Z]+, [a-zA-Z]+$/

需要考虑的事项:

  • 可以绕过您在客户端上执行的任何验证
  • 有些人的姓名可能带有重音字母
  • 有些文化不只使用两个名字

答案 2 :(得分:0)

^[a-zA-Z]+, [a-zA-Z]+$

但是,您是否应该阻止'。'?和J. Hooker一样?还有更多的话,比如'Jan van Hoogstrum'?另请注意,您要阻止使用任何重音字符。选项(虽然它允许下划线)是使用\w

^(\w+ )$

哪个会给你'名字名称......'。 “First,last”不是输入你名字的常用方法,所以你会以这种方式挫败很多用户。

答案 3 :(得分:0)

只允许第一个字母为大写的正确正则表达式为:

/^[A-Z][a-z]+, [A-Z][a-z]+$/