Javascript正则表达式不应该是可接受的输入,这与Java不同
我熟悉Java正则表达式,但不熟悉Javascript正则表达式 我想检查字符串输入的有效性,如果它看起来像一个名字。名字可以是xxxx xxx或xxx,其中x是字母。注意,在我所说的内容中,x的数量是不同的。这是我的代码:Javascript正则表达式不应该是可接受的输入,这与Java不同,javascript,regex,Javascript,Regex,我熟悉Java正则表达式,但不熟悉Javascript正则表达式 我想检查字符串输入的有效性,如果它看起来像一个名字。名字可以是xxxx xxx或xxx,其中x是字母。注意,在我所说的内容中,x的数量是不同的。这是我的代码: function checkName(name) { var pattern = new RegExp('([A-Za-z]+|[A-Za-z]+\\s[A-Za-z]+)'); return pattern.test(name); } 我已经创建了一
function checkName(name) {
var pattern = new RegExp('([A-Za-z]+|[A-Za-z]+\\s[A-Za-z]+)');
return pattern.test(name);
}
我已经创建了一个函数来处理表单中输入的文本中的名称。现在,它正在为诸如迈克尔或迈克尔·詹姆斯这样的输入工作。但是,它也适用于M3,例如,它有一个数字,并且应该不起作用。世界各地的专家对这一点有什么帮助吗 JavaScript中没有匹配的
方法(与Java不同)。如果您只想确保整个字符串与模式匹配,请在开头添加^
,在结尾添加$
。此外,如果您的正则表达式模式是静态的,建议使用正则表达式文字符号/…/
使用
为了进一步优化它(尽管性能增益很小),您可以使用可选组(?:..)
(请参阅):
看
函数检查名称(名称){
var模式=/^([A-Za-z]+|[A-Za-z]+\s[A-Za-z]+)$/;
返回模式.测试(名称);
}
让log=document.querySelector(“#log”),
test=document.querySelector(“test”);
test.addEventListener(“输入”,e=>{
if(检查名称(测试值)){
log.style.color=“绿色”;
log.innerHTML=“已通过!”;
}否则{
log.style.color=“红色”;
log.innerHTML=“失败”;
}
});代码>
#测试:焦点{大纲:无;}
JavaScript中没有匹配的方法(与Java不同)。如果您只想确保整个字符串与模式匹配,请在开头添加^
,在结尾添加$
。此外,如果您的正则表达式模式是静态的,建议使用正则表达式文字符号/…/
使用
为了进一步优化它(尽管性能增益很小),您可以使用可选组(?:..)
(请参阅):
看
函数检查名称(名称){
var模式=/^([A-Za-z]+|[A-Za-z]+\s[A-Za-z]+)$/;
返回模式.测试(名称);
}
让log=document.querySelector(“#log”),
test=document.querySelector(“test”);
test.addEventListener(“输入”,e=>{
if(检查名称(测试值)){
log.style.color=“绿色”;
log.innerHTML=“已通过!”;
}否则{
log.style.color=“红色”;
log.innerHTML=“失败”;
}
});代码>
#测试:焦点{大纲:无;}
也许您只是想确保整个字符串与模式匹配?在开头添加^
,在结尾添加$
。尝试var模式=/^([A-Za-z]+|[A-Za-z]+\s[A-Za-z]+)$/代码>@WiktorStribiżew是的,这就是我想要的!哈哈哈,谢谢你,先生。我还不知道,但现在我知道了。我熟悉Java正则表达式,但不熟悉Javascript正则表达式。再次感谢你!:)@JudeMaranga还有,我认为下面的表达式更为理想:^[A-Za-z]+(\\s[A-Za-z]+)?$
也许您只是想确保整个字符串与模式匹配?在开头添加^
,在结尾添加$
。尝试var模式=/^([A-Za-z]+|[A-Za-z]+\s[A-Za-z]+)$/代码>@WiktorStribiżew是的,这就是我想要的!哈哈哈,谢谢你,先生。我还不知道,但现在我知道了。我熟悉Java正则表达式,但不熟悉Javascript正则表达式。再次感谢你!:)@JudeMaranga还有,我认为下面的表达式更为理想:^[A-Za-z]+(\\s[A-Za-z]+)?$
而且你通常非常擅长标记重复项……为什么?@torazaburo:我回答是因为OP实际上来自Java。Java字符串#matches()
在JavaScript中不存在,这一事实让我给出了一个答案。@JudeMaranga:The(?:…)
是一个非捕获组,它只对子模式进行分组,而不在组缓冲区中存储捕获的值。?
是一个与量化子模式的1或0次匹配的量词。$
在PHP中可能在最后换行符之前匹配,请改用\z
。它们是在开始/结束位置锚定比赛所必需的。而且你通常非常擅长标记重复项……为什么?@torazaburo:我回答是因为OP实际上来自Java。Java字符串#matches()
在JavaScript中不存在,这一事实让我给出了一个答案。@JudeMaranga:The(?:…)
是一个非捕获组,它只对子模式进行分组,而不在组缓冲区中存储捕获的值。?
是一个与量化子模式的1或0次匹配的量词。$
在PHP中可能在最后换行符之前匹配,请改用\z
。它们是在开始/结束位置锚定比赛所必需的。
var pattern = /^([A-Za-z]+|[A-Za-z]+\s[A-Za-z]+)$/;
^^ ^
var pattern = /^[A-Za-z]+(?:\s[A-Za-z]+)?$/;
^^^^^^^^^^^^^^^^