我正在尝试验证一个表单以使用户输入他们的全名,如下所示..
第一,最后
用户必须有一些纯字母字符的字符串,然后是逗号,然后是空格,然后是姓氏,这又可以是任何字符字符串。
这是我目前的正则表达式..
var alphaExp = /^[a-zA-Z,+ a-zA-Z]+$/;
但是,它允许用户提交一些简单的东西,比如 john. 我希望它强迫他们提交诸如约翰、史密斯之类的东西。
我正在尝试验证一个表单以使用户输入他们的全名,如下所示..
第一,最后
用户必须有一些纯字母字符的字符串,然后是逗号,然后是空格,然后是姓氏,这又可以是任何字符字符串。
这是我目前的正则表达式..
var alphaExp = /^[a-zA-Z,+ a-zA-Z]+$/;
但是,它允许用户提交一些简单的东西,比如 john. 我希望它强迫他们提交诸如约翰、史密斯之类的东西。
您正在做的是创建一个[]
匹配以下任何字符的字符类 ( ):a-zA-Z,+
. 这允许john
匹配整个正则表达式。
这就是你想要的:
/^[a-zA-Z]+, [a-zA-Z]+$/
但是,我想建议您,对名称进行假设是有点错误的。如果有人叫约翰奥康纳怎么办?还是埃斯特万·佩雷斯?还是只是 Ng(只有名字)?
“认为某人的名字只能包含某些字符的代码是愚蠢、冒犯和错误的” - tchrist
当然,您不想让人们只输入胡言乱语,而是为用户留下一个选项,让他们输入不一定符合您对正确性的看法,但仍然是正确的。
这不是字符集的工作方式:
/^[a-zA-Z]+, [a-zA-Z]+$/
需要考虑的事项:
^[a-zA-Z]+, [a-zA-Z]+$
应该工作,但是,你想阻止'.'吗?就像 J. Hooker 一样?还有更多的词,比如“Jan van Hoogstrum”?另请注意,您正在防止使用任何重音字符。一个选项(尽管它允许使用下划线)是使用\w
:
^(\w+ )$
这会给你'name name name ...'。“第一,最后”不是输入您姓名的常用方式,因此您会以这种方式让很多用户感到沮丧。
仅允许首字母大写的正确正则表达式是:
/^[A-Z][a-z]+, [A-Z][a-z]+$/