只允許使用字母數字字元的 JavaScript 正規表示式
本文介紹如何從字串中刪除所有非字母數字字元。你可以使用 RegEx
表示式匹配除 JavaScript 中的數字或字母之外的所有字元。
JavaScript 的正規表示式只允許字母數字字元
你將使用給定的正規表示式來驗證使用者輸入以僅允許字母數字字元。字母數字字元是所有字母和數字,即字母 A-Z、a-z 和數字 0-9。
RegEx
的語法如下所示。
Regex: ^[a - zA - Z0 - 9] + $
有了我們可以使用的字母數字 RegEx
,使用 RegEx
只允許字串中的字母數字字元的解決方案變得非常簡單。
你可以設定一個啟用一系列字元的字元類,並新增一個重複字元類一次或多次的量詞以及將匹配項繫結到字串開頭和結尾的錨點。
要從字串中刪除非字母數字字元,你將首先呼叫 replace()
方法並傳遞一個匹配所有非字母數字字元的正規表示式 (RegEx)
作為第一個引數,並將一個空字串作為第二個引數.
str.replace()
方法將返回一個替換所有字元的新字串。
可以通過以下方式完成。
// a string
const str = '#BLOCTAKSolutions123?%';
// regex expression is used to match all non-alphanumeric characters in a string
const regex = /[^A-Za-z0-9]/g;
// using the replace() method to match and remove all the non-alphanumeric
// characters
const newStr = str.replace(regex, '');
console.log(newStr); // BLOCTAKSolutions123
下面的螢幕截圖顯示了該程式的輸出。
以下引數傳遞給 string.replace
方法。
- 要在字串中匹配的正規表示式
(RegEx)
。 - 每個匹配的替換。在你的情況下,它將是一個空字串,因為你要刪除所有非字母數字字元。
正斜槓 (/ /
) 標記正規表示式的開始和結束。方括號 []
被稱為字元類。
插入符^
符號表示不是以下
。在你的情況下,這意味著在 a-z
和數字 0-9
範圍內沒有字母。
你將使用 g
(全域性)標誌來匹配所有包含非字母數字字元的事件,而不僅僅是第一個事件。i
標誌使你的匹配不區分大小寫 - 你將匹配所有大寫和小寫字元。
如果你還需要保留空格、連字元或其他字元,請將它們新增到方括號 []
之間。
例如,假設你有一個類似 #BLOCTAKSolutions123?%
的字串,如下面的 JavaScript 程式碼所示。
// a string
const str = '#BLOCTAKSolutions123?%';
從上面程式碼中的字串可以看出,有一些像 #?%
這樣的字元。但是,它們不是數字或字母。
所以在這裡,我們將定義一個正規表示式來匹配字串中的所有非字母數字字元。
// a string
const str = '#BLOCTAKSolutions123?%';
// regex to match all non-alphanumeric characters in string
const regex = /[^A-Za-z0-9]/g;
現在你將使用 replace()
字串方法並執行以下操作。
- 將
regex
表示式作為第一個引數傳遞給方法。 - 將一個空字串
''
作為第二個引數傳遞給該方法。 - 該方法將返回一個新的
字串
。
此 JavaScript 程式碼將從字串中刪除所有非字母數字字元,並將它們替換為空字串。它將通過以下方式完成,如下面的 JavaScript 程式碼所示。
const newStr = str.replace(regex, '');
console.log(newStr); // BLOCTAKSolutions
如你所見,newStr
是一個新字串,但刪除了所有非字母數字字元。此程式碼保留所有字母數字字元、空格和破折號。
你可以通過新增或減去方括號 ([]
) 中的字元來根據需要調整正規表示式。
replace
方法不用於更改原始字串的內容;它只返回一個新字串。原因是字串在 JavaScript 中是不可變的。
因此,在這篇 JavaScript 教程文章的幫助下,你學習瞭如何使用 JavaScript 中的正規表示式 (RegEx)
從字串中刪除所有非字母數字字元。
你可以使用 str.replace()
方法來實現此目的。str.replace()
方法將返回一個替換所有字元的新字串。