2011-09-07 2 views
0

사용자가 아래의 유효한 문자 목록을 준수하는지 확인하는 javascript 함수를 만드는 가장 좋은 방법/올바른 방법 (사용자가 html 형식을 통해 사용자 이름을 입력 함) - 문자 목록이 함수에 고착하면 true를 반환하고 그렇지 않으면 false를 반환합니다. 정규식과 일치하는 경우Javascript 함수 유효한 사용자 이름

validcharacters = '1234567890-_.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
+0

루프와 중첩 루프를 사용하지 마십시오 같이 IndexOf() 함수를 사용하는 것입니다. 정규식을 사용해야합니다. –

답변

6
function usernameIsValid(username) { 
    return /^[0-9a-zA-Z_.-]+$/.test(username); 
} 

이 함수는 true를 반환합니다. username이 숫자, 문자 및 _, ., - 문자로만 구성된 경우 정규 표현식과 일치합니다.

당신은 정규식없이 그것을 할도 수 :

이 하나 들어
function usernameIsValid(username) { 
    var validcharacters = '1234567890-_.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 

    for (var i = 0, l = username.length; i < l; ++i) { 
     if (validcharacters.indexOf(username.substr(i, 1)) == -1) { 
      return false; 
     } 
     return true; 
    } 
} 

, 우리가 username에 모든 문자를 반복하고 문자 validcharacters에 있는지 확인합니다.

+0

당신은'!!'의 사용법을 설명 할 수 있습니까?'username.match (/^[0-9a-z _.-] + $ /)'와는 같지 않습니까? – besamelsosu

+0

The는'.match'의 반환 값을 boolean으로 변환합니다. http://stackoverflow.com/questions/784929/what-is-the-operator-in-javascript – arnaud576875

+1

또는'/^[0-9a-zA-Z_.--]+$/.test(username)를 참조하십시오. '. 이 작업은 일치 작업보다 비용이 적게 듭니다. – sethobrien

0

하나의 방법은 입력 필드에서 각 문자를 읽고 효율적 아니기 때문에