我尝试验证表单以使用户输入其全名,如下所示..
首先,最后
用户必须有一些字母字符串,然后是逗号,然后是空格,然后是姓氏,也可以是任何字符串。
这是我目前的正则表达式。
var alphaExp = /^[a-zA-Z,+ a-zA-Z]+$/;
但是,它允许用户提交像john一样简单的内容。我希望它强迫他们提交像约翰,史密斯这样的东西。
答案 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]+$/