如何使用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()方法的簡單方法,但它效率不高,因此不推薦使用。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP