我有一个输入文件,用户将输入他们的名字和姓氏。 例如:(约翰史密斯) 如何检查名字(J)的第一个字符和姓氏(S)的第一个字符是否为大写?如果匹配则返回true,如果匹配则返回false。
我一直在寻找试用RegExp ^[A-Z][a-z]*(-|\s)[A-Z][a-z]*$
的解决方案,但我不知道如何使用它。
谢谢:)
答案 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">