1

文字列「名前」に含まれるものがすべて小文字のアルファベットであることを確認するときに数字が含まれているため、このコードが1つの誤ったアラートのみを返すようにするにはどうすればよいですか?

var name = "Bob1";
var i = 0; 
var name = name.toLowerCase()

for(i=0; i<name.length; i++){
  if((name.charCodeAt(i)>96) && (name.charCodeAt(i)<123)) {
    alert("true");
  } else {alert("false");}
}
4

4 に答える 4

5

これには正規表現を使用します。

if(name.match(/\d/)) {
    // this contains at least one number
}
else {
    // this doesn't contain any numbers
}

人々は支持された回答に気付くので、あなたのケースのさらに良い解決策を参照します。これは、Ray Toal によって言及されています (この場合の彼へのクレジット/賛成票):

アンダーケースのアルファのみを許可したいのでname、これを直接処理することもできます (これにより、ハイフンなどの問題もカバーされます)。

if(name.match(/^[a-z]+$/)) {
    // this contains only undercase alpha's
}
else {
    // this contains at least one character that's not allowed
}
于 2013-05-01T05:50:33.053 に答える
1

aすべての文字が範囲内にあることを警告したい場合は、zそれを直接言う正規表現を使用できます

alert(/^[a-z]+$/.test(name1.toLowerCase()))

false条件を逆にして、文字列に少なくとも 1 つの非文字が含まれている場合に値が必要だと言うこともできます。

alert(!(/[^a-z]/.test(name1.toLowerCase())))
于 2013-05-01T05:54:02.520 に答える
0

休憩を入れます。初めて false を警告した後にループから抜け出すため、 else の内部

于 2013-05-01T05:51:54.577 に答える
0

ステートメントを追加して、break新しいコードが if ステートメント内で次のようになるようにします

if((name.charCodeAt(i)>96) && (name.charCodeAt(i)<123))
 {alert("true");
   break;
 }else

...基本的にはforループを終了するだけです(同じコマンドがwhileループでも機能します)

于 2013-05-01T05:50:39.940 に答える