Javascript验证字符串是一个字符后跟数字
问题描述:
我想验证一个字符串,其中第一个字符必须是'x'
,其余字符必须是数字。例如:Javascript验证字符串是一个字符后跟数字
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;
}
我已经试过几件事情,如倒车我的逻辑,我开始给定condidtion为真,然后检查if(!(firstLetter == 'x'))
我试过==
和===
,我试着用,+()
来铸造代码的其余部分,而不是根本没有铸造它,但是这些都看不出来。控制台确实在代码中记录了合适的第一个字符和剩余的字符,所以我不确定是什么错误。
答
您可以使用正则表达式测试:
function isValidCode(code) {
return /^[a-z]\d+$/.test(code);
}
我在做一个小写字母是必需的,随后在至少一个数字的假设。
只匹配只有字母“X”,使用:
function isValidCode(code) {
return /^x\d+$/.test(code);
}
答
结束匹配
您可以使用RegExp
/^x(?=\d+$)/
在输入后面的数字开头,然后输入
var arr = ["x1234"
, "k1234"
, "x12k4"
, "1x123"];
var re = /^x(?=\d+$)/;
arr.forEach(function(str) {
console.log(`${str}: ${re.test(str)}`)
})
x
+0
不错,谢谢你包括tge测试用例,不幸的是,戴夫在几分钟内击败了你。 – kalenpw
谢谢,这个工程,它更清洁,它目前接受任何信件,但我可以n解决这个问题。我会在5分钟内接受它。顺便说一句,任何想法为什么原始代码不工作? – kalenpw
Number(“”)将被转换为0.当'remainingCode'为“”时,0被传递给isNumeric,返回true。 – dave