簡體   English   中英

驗證名字和姓氏(不使用正則表達式)

[英]Validate First and Last name (not using regular expression)

我需要在一個輸入框中驗證用戶輸入的名字和姓氏。 我必須確保它們僅使用字母,而不使用其他字符,並且使用大寫或小寫形式,例如:John Smith。 我可以找到很多使用正則表達式執行此操作的方法,但是該任務明確要求不要使用正則表達式。

即使有人將我指向可以自己找到此信息的地方。

謝謝

只需檢查每個字母,看看它是否有效。 因此,您將創建一個有效字符數組,然后確保每個字符都位於該數組中。

function validate_name(name) {
  var alphabet = 'abcdefghijklmnopqrstuvwxyz';
  alphabet = alphabet + ' ' + alphabet.toUpperCase();
  alphabet = alphabet.split(''); //turn it into an array of letters.
  for (i=0; i<name.length; i++) {
    if (!~alphabet.indexOf(name.charAt(i)) { //!~ just turns -1 into true
       return false;
    }
  }

  return true;
}

我覺得,考慮到這個問題,最好使解決方案保持簡單。

請注意以下觀察:

  1. 字符串可以像數組一樣被索引,長度可以像數組一樣。 因此,字符串可以像數組一樣循環。
  2. 字符串按詞法排序。 即, "a" < "b""A" < "B"都為真。
  3. String.toLower可以將"A"轉換為"a"

然后,我們可以開始一個基本的C風格方法:

for (var i = 0; i < inp.lenth; i++) {
   var ch = inp[ch];
   if (ch == " ") ..              // is space
   if (ch >= "a" && ch <= "z") .. // lowercase English letter
   ..

當然,問題可能不僅僅在於確保字母全都位於{az,AZ,space}中。 考慮這些輸入-它們有效嗎?

  • “約翰·多伊”
  • “ JohnDoe”
  • “ 約翰 ”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM