Javascript 正则表达式名称首字母大写检查

Javascript 正则表达式名称首字母大写检查,javascript,regex,forms,Javascript,Regex,Forms,您好,我正在尝试用正则表达式检查名字的第一个字母是否为大写,我现在已经找到了这个代码 /^([A-Z][a-z]{3,})([A-Z a-z]*$)/ 问题是名称至少应包含4个字母,每个单词应以大写字母开头,如下所示: 约翰·古斯塔夫·莱恩 是可以的,因为每个第一个字母都是大写的,左边有4个字母 约翰·古斯塔夫·莱恩 不好 我在javascript上使用它来验证名为“我拥有的名称”的表单条目: var name_input = document.getElementById("name

您好,我正在尝试用正则表达式检查名字的第一个字母是否为大写,我现在已经找到了这个代码

/^([A-Z][a-z]{3,})([A-Z a-z]*$)/
问题是名称至少应包含4个字母,每个单词应以大写字母开头,如下所示:

约翰·古斯塔夫·莱恩

  • 是可以的,因为每个第一个字母都是大写的,左边有4个字母
约翰·古斯塔夫·莱恩

  • 不好
我在javascript上使用它来验证名为“我拥有的名称”的表单条目:

var name_input = document.getElementById("name");
var name_value = name_input.value;
var nameformat = /^([A-Z][a-z]{3,})([A-Z a-z]*$)/;

if(name_value .match(nameformat)){
        alert("OK");
    }else{
        alert("NOT OK");
    }

有什么帮助吗?

我相信这类东西可以:

/^([A-Z][a-z]{3,}[ ]*?)+$/

正则表达式
/^[A-Z][A-Z]{3,}([A-Z][A-Z]{3,})*$/
匹配一个名称或多个连续名称(所有名称的首字母都是大写的,下一个字母必须是小写的),由单个空格分隔
(因此,
johnwilliamsmith
不匹配)

Javascript实现:

const regex = new RegExp(/^[A-Z][a-z]{3,}( [A-Z][a-z]{3,})*$/);
alert(document.getElementById("name").value.match(regex) ? 'OK' : 'Not OK');

“致以最良好的祝愿”

只需更改为/^[A-Z][A-Z]{3,}([A-Z][A-Z]{0,})*$/即可完美工作,以允许其余名称少于4个字符