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); 
} 
+0

谢谢,这个工程,它更清洁,它目前接受任何信件,但我可以n解决这个问题。我会在5分钟内接受它。顺便说一句,任何想法为什么原始代码不工作? – kalenpw

+0

Number(“”)将被转换为0.当'remainingCode'为“”时,0被传递给isNumeric,返回true。 – dave

您可以使用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