如何检查名字和姓氏的第一个字符是否为大写?

时间:2018-03-12 16:12:32

标签: javascript regex

我有一个输入文件,用户将输入他们的名字和姓氏。 例如:(约翰史密斯) 如何检查名字(J)的第一个字符和姓氏(S)的第一个字符是否为大写?如果匹配则返回true,如果匹配则返回false。

我一直在寻找试用RegExp ^[A-Z][a-z]*(-|\s)[A-Z][a-z]*$的解决方案,但我不知道如何使用它。

谢谢:)

3 个答案:

答案 0 :(得分:0)

您应该实施几个层。

第一个是在您的标记中,将输入的pattern属性设置为等于以下RegEx:

^[A-Z].* [A-Z].*$

第二个是你的造型,输入样式包括以下内容:

[selector] {text-transform: capitalize;}

第三个是在你的JavaScript中,使用以下函数将输入中的String更改为正确的等效项,这将允许您在表单的提交事件(courtesy of Tuan)中转换输入值:

String.prototype.toProperCase = function () {
    return this.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
};

最后,第四个将在你的后端代码中,你想要重新验证输入也匹配那里的格式。但由于你没有指定后端语言,我无法帮助你。

做这四件事可以完成一些事情。对于使用表单的普通用户,他们通过CSS样式输入所需的格式。对于试图绕过所需行为的恶意用户,newb只会尝试删除pattern属性,以便被JavaScript捕获。拥有更多大脑的用户只会移除JavaScript而被后端代码捕获。

答案 1 :(得分:-1)

有一个很好的答案here

function toTitleCase(str)
{
     return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
}

答案 2 :(得分:-1)

使用简单的CSS来大写您的输入:

input {
  text-transform: capitalize;
}

<input type="text" name="textfield">