如何使用JavaScript驗證輸入是否為字母數字?


我們被賦予了驗證輸入字串的任務,需要使用JavaScript檢查它是否為字母數字。字母數字字串僅包含數字和字母字元,包括大寫或小寫字元,並且不包含任何特殊字元或空格。

下面,我們將看到兩種驗證輸入字串的方法。

使用charCodeAt()方法

我們可以使用charCodeAt()方法獲取任何字元的ASCII值。在這裡,我們將遍歷字串的每個字元並檢查每個字元的ASCII值。48到57之間的ASCII碼錶示數字字元,97到122表示小寫字母字元,65到90表示大寫字母字元。

因此,如果我們發現任何字元的ASCII值不在上述給定的ASCII範圍內,我們可以說該字串不是字母數字。

語法

使用者可以遵循以下語法使用charCodeAt()方法來檢查輸入字串是否為字母數字。

let charCode = char.charCodeAt(0);
if (!(charCode > 47 && charCode < 58) &&
   !(charCode > 96 && charCode < 123) &&
   !(charCode > 64 && charCode < 91)
) {
   // string is not alphanumeric
   return;
}

在上述語法中,char是一個單個字元。我們使用charCodeAt()方法獲取單個字元的ASCII值。之後,我們使用if-else語句檢查字元的ASCII碼是否在數字和字母字元的ASCII值之間。

示例1

在下面的示例中,我們建立了兩個包含各種字元的輸入字串。此外,我們還定義了validateString()函式。在validateString()函式中,我們使用for-of迴圈遍歷每個字串字元。此外,我們透過傳遞0作為引數來使用charCodeAt()方法獲取字元的ASCII值。

之後,我們檢查任何字元的ASCII碼是否不在數字和字母字元的ASCII範圍之內;我們可以說字串不是字母數字。

<html>
<body>
   <h3>Using the <i> for loop and charCodeAT() method </i> to check if input string is alphanumeric or not</h3>
   <div id = "output"> </div>
   <script>
      var output = document.getElementById('output');
      let str1 = "aredsUADFSKH121342kjbrewdfv";
      let str2 = "dfdrg rflrtke 435 3df;fd'gfdg";
      function validateString(string) {
         for (let char of string) {
            let charCode = char.charCodeAt(0);
            if (!(charCode > 47 && charCode < 58) &&  !(charCode > 96 && charCode < 123) &&    !(charCode > 64 && charCode < 91)
            ) {
               output.innerHTML += "The string " + string + " is not alphanumeric! </br>";
               return;
            }
         }
         output.innerHTML += "The string " + string + " is an alphanumeric! </br>"; 
      }
      validateString(str1);
      validateString(str2);
   </script>
</body>
</html>

使用正則表示式

我們可以使用帶有new關鍵字的RegExp()建構函式建立正則表示式。它是一個模式,我們可以用正則表示式模式匹配輸入字串,並根據它返回true或false布林值。

語法

使用者可以遵循以下語法使用正則表示式來驗證字母數字字串。

let strRegex = new RegExp(/^[a-z0-9]+$/i);
let result = strRegex.test(string); 

在上述語法中,result變數包含基於字串是否為字母數字的布林值。

正則表示式解釋

  • ^ - 它表示字串的開頭。

  • [a-z0-9]+ - 它只表示a到z或0到9之間的字元。

  • $ - 它表示字串的結尾。

  • i – 它是用於不區分大小寫的字串比較的正則表示式的標誌。

示例2

在下面的示例中,我們透過傳遞各種字串作為引數來呼叫validateString()函式。在函式中,我們建立瞭如上所述的正則表示式。之後,我們使用test()方法,以正則表示式為參考,並將輸入字串作為驗證引數傳遞。

如果test()方法返回true,則輸入字串為字母數字,並且僅包含數字和字母字元;否則,字串不是字母數字。

<html>
<body>
   <h3>Using the <i> Regular expression </i> to check if input string is alphanumeric or not</h3>
   <div id = "output"> </div>
   <script>
      var output = document.getElementById('output');
      let str1 = "Welcome to the tutorialsPoint";
      let str2 = "Hello123";
      function validateString(string) {
         
         // Defining the regular expression
         let strRegex = new RegExp(/^[a-z0-9]+$/i);
         
         // match the regex with the string
         let result = strRegex.test(string);
         if (result) {
            output.innerHTML += "The string " + string + " is an alphanumeric! </br>";
         } else {
            output.innerHTML += "The string " + string + " is not alphanumeric! </br>";
         }
      }
      validateString(str1);
      validateString(str2);
   </script>
</body>
</html>

示例3

在下面的示例中,我們使用prompt()方法從使用者那裡獲取字串。之後,我們使用正則表示式來驗證字串,就像我們在上面的示例中使用的那樣,但是在這裡我們使用了不同的正則表示式。

這裡,[^a-zA-Z0-9]表示任何不在a到z、A到Z和0到9之間的字元。因此,如果字串不是字母數字,則test()方法返回true,對於字母數字字串則返回false。

<html>
<body>
   <h3>Using the <i> Regular expression </i> to check if input string is alphanumeric or not</h3>
   <div id = "output"> </div>
   <button onClick = "getInputAndValidate()"> Validate random string </button>
   <script>
      var output = document.getElementById('output');
      function getInputAndValidate() {
         let string = prompt("Enter a string to validate", "1232dwe");
         let strRegex = new RegExp(/[^a-zA-Z0-9]/);
         
         // match the regex with the string
         let result = strRegex.test(string);
         if (!result) {
            output.innerHTML += "The string " + string + " is an alphanumeric! </br>";
         } else {
            output.innerHTML += "The string " + string + " is not alphanumeric! </br>";
         }
      }
   </script>
</body>
</html>

在本教程中,我們學習瞭如何驗證字母數字字串。我們使用了兩種不同的正則表示式來驗證字母數字字串。此外,我們還學習了使用for迴圈和charCodeAt()方法的簡單方法,但它效率不高,因此不推薦使用。

更新於:2023年2月16日

10K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.