2011-09-07 11 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; 
    } 
} 

この1のために、我々はusername内のすべての文字を反復処理し、文字がvalidcharactersであることを確認してください。

+0

あなたは '!!'の使用法を説明できますか? 'username.match(/^[0-9a-z _.-] + $ /)'と同じではありませんか? – besamelsosu

+0

'.match'の戻り値をブール値に変換します。 http://stackoverflow.com/questions/784929/what-is-the-operator-in-javascript – arnaud576875

+1

または「/^[0-9a-zA-Z_.--]+$/.test(username)」を参照してください。 '。これは、マッチよりも安価な操作である可能性があります。 – sethobrien

0

一つの方法は、入力フィールドから各文字を読んで、それは効率的ではないので

関連する問題