2016-09-23 6 views
1

첫 번째 문자가 'x'이어야하며 나머지 문자는 숫자 여야 만하는 문자열의 유효성을 검사하려고합니다. 예를 들면 다음과 같습니다 Javascript validate string은 숫자 다음에 오는 문자입니다

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 % 확신하지만, 여기 단지에 경우 : 예 나는 진실되고 다음 내가 == 0을 시도했습니다 if(!(firstLetter == 'x'))을 확인 주어진 condidtion로 시작하는 내 논리를 역으로

function isNumeric(numberIn) 
{ 
    var returnValue = true; 

    if (isNaN(numberIn) || isNaN(parseInt(numberIn, 10))) 
    { 
     returnValue = false; 
    } 

    return returnValue; 
} 

내가 시도한 몇 가지과 나는 코드의 나머지 부분을 Number(), +()으로 캐스팅했지만 전혀 캐스팅하지 않았지만 이들 중 아무 것도 트릭을 수행하지 않습니다. 콘솔은 올바른 첫 번째 문자와 나머지 문자를 코드에 기록하므로 잘못된 것이 확실하지 않습니다.

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

내가 소문자는 적어도 하나 개의 숫자 다음에 필요하다는 가정을 만드는 중이라서 :

답변

1

당신은 정규 표현식 테스트를 사용할 수 있습니다.

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

감사합니다.이 코드는 작동하며 훨씬 더 깨끗합니다. 지금은 어떤 문자도 허용하지만, 그게 해결 됐어. 내가 할 수있을 때 5 분 안에 받아 들일거야. 제쳐두고 원래 코드가 작동하지 않는 이유는 무엇입니까? – kalenpw

+0

숫자 ("")는 0으로 변환됩니다. 'remainingCode'가 ""이면 0이 isNumeric으로 전달되어 true를 반환합니다. – dave

1

당신은 RegExp/^x(?=\d+$)/ 입력

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

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

 
arr.forEach(function(str) { 
 
    console.log(`${str}: ${re.test(str)}`) 
 
})
의 말에 따라 숫자 다음에 입력의 시작 부분에 x에 맞게 사용할 수 있습니다

은 단지 문자와 일치하려면 사용을 'X'

+0

감사합니다. tge 테스트 케이스를 포함 해 주셔서 감사합니다. 불행히도 dave가 몇 분 남았습니다. – kalenpw

관련 문제