2016-09-23 8 views
1

最初の文字が'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が真であることで開始し、その後、私は==と0を試してみたif(!(firstLetter == 'x'))をチェックし、私の論理を反転させるなど、いくつかのことを試してみましたと私はコードの残りの部分を​​、+()でキャスティングしようとしましたが、まったくキャストしませんでしたが、これらのどれもそのトリックを行うことはありません。コンソールは、適切な最初の文字と残りの文字をコードに記録するので、何が間違っているのか分かりません。

function isValidCode(code) { 
    return /^[a-z]\d+$/.test(code); 
} 

私は小文字が少なくとも一つの数字が続く、必要とされることを前提に作っています:

答えて

1

あなたが正規表現のテストを使用することができます。

のみだけで文字「X」を一致させるには、使用:

function isValidCode(code) { 
    return /^x\d+$/.test(code); 
} 
+0

ありがとうございます、これは動作し、はるかにクリーンですが、現時点では手紙を受け入れますが、私はnそれを修正する。私は5分後にそれを受け入れます。さて、元のコードがうまくいかなかった理由は何ですか? – kalenpw

+0

数値( "")は0に変換されます。 'remainingCode'が" "の場合、0がisNumericに渡され、trueを返します。 – dave

1

あなたは入力

var arr = ["x1234" 
 
, "k1234" 
 
, "x12k4" 
 
, "1x123"]; 
 

 
var re = /^x(?=\d+$)/; 
 

 
arr.forEach(function(str) { 
 
    console.log(`${str}: ${re.test(str)}`) 
 
})
の終わりに続く数字が続く入力の先頭に xに一致するように RegExp /^x(?=\d+$)/を使用することができます

+0

いいね、tgeテストケースを含めてくれてありがとう、残念ながら、デイブは数分であなたを倒しました。 – kalenpw

関連する問題