有没有办法让Regex函数检查名字和姓氏?

问题描述 投票:2回答:2

我正在为我的编码课做一个作业(我是初学者)。分配是创建一个带有2个输入的HTML页面,一个用于名字,一个用于姓氏,并且可以创建一个提交按钮,单击该按钮时,将检查名字和姓氏是否都以大写字母开头并包含至少1个字符。当它们都匹配正则表达式时,将使用警报并且控制台会记录。如果没有,则使用不同的警报,并且控制台不会记录。当我完成制作html和脚本时,我在两个输入中都输入了一个与正则表达式匹配的名称,但它只发出错误输入的警报。有些不对劲,但我找不到。


function regexChecker(firstName, lastName) {
    firstName = document.getElementById("firstName").innerHTML;
    lastName = document.getElementById("lastName").innerHTML;
    let firstNameRegex = /^[A-Z][a-z]*$/;
    let lastNameRegex = /^[A-Z][a-z]*$/;
    if (firstName.match(firstNameRegex) && lastName.match(lastNameRegex)) {
        alert('Yay! Your inputs were all correct!' );
        console.log(true);
    }
    else {
        alert('Oh no! Thats an invalid format!' );
        console.log(false);
    }
}

在我没有提供的链接html中,每个名称都有两个输入,以及一个按钮。我在第一个中输入了Isaac这个名字,在第二个中输入了Daniels。我预计警报是“Yay!你的输入都是正确的!”,但我得到了“哦不!这是一种无效的格式!”

javascript html regex
2个回答
3
投票

你犯了两个错误:

  • 使用value而不是qazxsw poi。 qazxsw poi没有innerHTML
  • <input>返回一个总是真实的数组。甚至innerHTML。你应该使用match而不是Boolean([]) => true
  • 你的test()首先不会传递包含大写字母的字符串。你应该使用match

这是代码。

RegExp

注意:两个字符串都具有相同的正则表达式/^[A-Z][a-zA-Z]*$/,因此您可以使用function regexChecker(firstName, lastName) { firstName = document.getElementById("firstName").value; lastName = document.getElementById("lastName").value; let firstNameRegex = /^[A-Z][a-zA-Z]*$/; let lastNameRegex = /^[A-Z][a-zA-Z]*$/; if (firstNameRegex.test(firstName) && lastNameRegex.test(lastName)) { alert('Yay! Your inputs were all correct!' ); console.log(true); } else { alert('Oh no! Thats an invalid format!' ); console.log(false); } } 来检查两者。

/^[A-Z][a-z]*$/

1
投票

你可以使用这个正则表达式:

every()

它将测试它以大写字母开头,后跟小写字母,并且至少有一个字母长。

您可以将regexp与function regexChecker(firstName, lastName) { firstName = document.getElementById("firstName").value; lastName = document.getElementById("lastName").value; let regex = /^[A-Z][a-zA-Z]*$/; if ([firstName,lastName].every(x => regex.test(x))) { alert('Yay! Your inputs were all correct!' ); console.log(true); } else { alert('Oh no! Thats an invalid format!' ); console.log(false); } } 一起使用来获取true / false值。

/^([A-Z][a-z]*)+$/
.test()
© www.soinside.com 2019 - 2024. All rights reserved.