2011-07-17 5 views
0

Javascriptで(簡単な)プログラミング問題を解決しようとしていて、それを動作させる方法を理解できません。私はプロンプトを使ってテキスト文字列を読み込むことから始まるプログラムを持っています。Javascriptの文字列形式を確認する

プログラムの出力である入力名には、必要な形式に合うかどうかに応じてどちらかの「有効な名前」または「無効な名」、:

「姓、名、ミドルネームのイニシャル」

どちらの名前も15文字を超えることはできません。

私はこれを行う簡単な方法があると知っていますが、私はそれをどこでも見つけることができません。ご協力いただきありがとうございます!

+1

この宿題はありますか? – Nicole

+0

私は15文字より長い名前の人をいくつか知っています。ミドルネーム(自分自身を含む)やいくつかのミドルネームを持たないものもあります。何が有効かどうかを判断するルールを十分に考えておく価値があります。 – gilly3

答えて

1

それは、このような_や9などの文字が含まれるように私は、\wを使用することはありません数字。次のテストで正規表現を検討してください:

<script> 
    if ("Nami, Guilherme, P".match(/^[A-Z][a-z]{1,14}, [A-Z][a-z]{1,14}, [A-Z]\.?$/)) { 
     alert("Valid"); 
    } 
    else { 
     alert("Invalid"); 
    } 
</script> 
+0

私は大文字と小文字を区別しないで、より多くの文字を許可します。 McDonaldやO'Learyのような名前を考えてみましょう。 – gilly3

+0

ホセ、ノエル、ゆきひろ、أسامةのような名前はもちろん... –

1

使用この正規表現:

/^\w{0,15}, \w{0,15}, \w{0,15}\.?$/.test(name) 
+2

今彼に2つの問題があります –

+0

最後の部分が1桁に変更されています(これはインタルであるため)。オプションのドット文字を使用することができます –

+1

姓と名の5文字の最小値OPの要件。 – RobG

1

この(私のテストで働いていた)動作するはずです:

// assuming there are no commas in fields 
var string = "last name, first name, middle initial", 
string_array = string.split(', '), 
length = string_array.length; 

for (i = 0; i < length; i++) { 
    // changing string to 'blah, firrrrrsssttt nammme, bbbbb' outputs the alert message 
    if (string_array[i].length > 15) alert('None of these can be more than 15 characters long. ' + string_array[i] + ' is too long'); 
}