我正在尝试验证字符串,其中第一个字符必须是'x'
,其余字符必须是数字。例如:
x1234 == true;
k1234 == false;
x12k4 == false;
1x123 == false;
这是我的代码:
function isValidCode(code){
var firstLetter = code.substring(0,1);
var remainingCode = code.substring(1);
var validCode = false;
// Debugging
console.log(firstLetter);
console.log(remainingCode);
if(firstLetter == 'x'){
validCode = true;
}
if(isNumeric(Number(remainingCode))){
validCode = true;
}
}
我调试了我的isNumeric()
函数,所以我99.9%肯定问题不存在,但这里只是以防万一:
function isNumeric(numberIn)
{
var returnValue = true;
if (isNaN(numberIn) || isNaN(parseInt(numberIn, 10)))
{
returnValue = false;
}
return returnValue;
}
我尝试了几件事情,例如在我开始时给定的条件为真,然后检查if(!(firstLetter == 'x'))
我已尝试==
和===
我已经尝试了一些事情。尝试使用Number()
,+()
投射代码的剩余部分,而不是完全投射它,但这些都没有看到要做的伎俩。控制台会记录正确的第一个字符和代码中剩余的字符,所以我不确定是什么问题。
答案 0 :(得分:1)
您可以使用正则表达式测试:
function isValidCode(code) {
return /^[a-z]\d+$/.test(code);
}
我假设需要一个小写字母,后跟至少一个数字。
要仅匹配字母' x',请使用:
function isValidCode(code) {
return /^x\d+$/.test(code);
}
答案 1 :(得分:1)
您可以在输入开头使用RegExp
/^x(?=\d+$)/
匹配x
,后跟数字,然后输入结束
var arr = ["x1234"
, "k1234"
, "x12k4"
, "1x123"];
var re = /^x(?=\d+$)/;
arr.forEach(function(str) {
console.log(`${str}: ${re.test(str)}`)
})