JS正則密碼校驗之 JS正則匹配半形英文符號

2021-09-29 18:53:10 字數 938 閱讀 7957

在js密碼校驗中常常會遇到密碼強度的校驗需求,借用一位朋友提問的圖,他在工作中遇到的乙個比較經典的密碼強度校驗要求:

這個需求有兩個難點,一,是如何使用正則匹配所有半形英文標點符號,二,是如何驗證密碼段中在要求的四種(大寫字母,小寫字母,數字,標點符號)型別中至少存在三種。

首先,我們來解決第乙個難點:如何使用正則匹配所有半形英文標點符號。

太長不看版:

滿足需求:使用js正則匹配所有半形英文標點符號(不含大小寫字母)

解決方案:使用正規表示式:/[\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]/

但如果需要匹配的英文符號不是少數的幾個,而是全部,這種乙個乙個的寫法就顯得很臃腫。為了解決這種寫法臃腫的問題,那我們就可以將目光投向另一種正規表示式中支援的字元表示模式:ascii碼字元。

ascii(pronunciation: /ˈæski/ ass-kee,american standard code for information interchange,美國資訊交換標準**)是基於拉丁字母的一套電腦編碼系統。它主要用於顯示現代英語,而其擴充套件版本eascii則可以部分支援其他西歐語言,並等同於國際標準iso/iec 646。由於全球資訊網使得ascii廣為通用,直到2023年12月,逐漸被unicode取代。

在正規表示式中既支援ascii碼字元,同時也支援unicode碼字元,但為了節省表示式長度,在這裡我們選用了ascii碼進行處理。

下圖為ascii碼的經典對照表:

而且因為半形符號在ascii編碼中排列較為連續,故可以採用 "-" 進行連線,每個符號具體的十六進製制ascii編碼數可通過查表獲取。最後拼成的正規表示式為:

即能滿足匹配所有半形英文符號的需求。

js 正則匹配

isnumber 是否為數字 regexps.isnumber d d isint 是否為整形 regexps.isint d istime 是否為時間格式 regexps.istime d d d s d d d isdate 是否為日期格式 regexps.isdate d d d isemai...

js正則匹配

var childnodename childnodename val 自定義name只能輸入數字 字母或漢字 if childnodename var regex1 a za z a za z0 9 字母數字,字母開頭 var regex3 a za z0 9 字母數字下劃線 var regex4...

js正則匹配

與大多數程式語言相同,正規表示式裡使用 作為轉義字元,這就可能造成反斜槓困擾。假如你需要匹配文字中的字元 那麼使用程式語言表示的正規表示式裡將需要4個反斜槓 第乙個和第三個用於在程式語言裡將第二個和第四個轉義成反斜槓,轉換成兩個反斜槓 後再在正規表示式裡轉義成乙個反斜槓用來匹配反斜槓 這樣顯然是非常...