尝试验证用户是否输入了以字母开头的名称,长度至少为8个字符,并且其中至少包含一个数字。请参阅以下代码: -
我能够开始工作的前两个条件,它验证是否有一个数字。我试图通过其中的数字验证单独运行一个函数,但我似乎无法让它工作。这是我最近的尝试,它的工作,任何帮助将不胜感激,请记住我是一年级学生:)
function nameVerify() {
var char1;
var char2;
var index;
var NL = "\n";
var valid = false;
char1 = useNam.substr(0, 1);
char1 = char1.toUpperCase();
char2 = useNam.substr(1);
for (index = 1; index <=useNam.length; index++){
while (!valid) {
if ((char1 <"A" || char1 >"Z") || (useNam.length <8) && (char2 >=0 || char2 <=9)){
alert("alert 1");
useNam = prompt("prompt 2");
char1 = useNam.substr(0, 1);
char1 = char1.toUpperCase();
char2 = useNam.substr(1);
}
else {
valid = true;
alert("Congragulations, you entered it correctly");
}
}
}}
var useNam;
useNam = prompt("prompt 1");
result = nameVerify(useNam);
答案 0 :(得分:2)
/**
* @param {string} str name to test
* @return {boolean} true if str is valid
*/
function isValidName(str) {
return /^[a-zA-Z][a-zA-Z0-9]{7,}$/.test(str) && /\d/.test(str)
}
/^[a-zA-Z][a-zA-Z0-9]{7,}$/
测试它以字母开头,长度至少为8个字符,所有字符都是字母或数字。 /\d/
测试它至少包含1个数字。有关特殊字符和此处描述的x{n,}
语法,请参阅MDN's RegExp documentation以获取参考。如果您也允许下划线,则可以使用/^[a-zA-Z]\w{7,}$/
进行第一次测试。
答案 1 :(得分:0)
试试这个
valid = myString.match(/\d/).length > 0
这是一个正则表达式,它将返回它匹配的第一个数字,否则返回一个空数组