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

概述

在JS密碼校驗中經常會遇到密碼強度的校驗需求,借用一位朋友提問的圖,他在工做中遇到的一個比較經典的密碼強度校驗要求:正則表達式

xuqiu.jpg

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

首先,咱們來解決第一個難點:如何使用正則匹配全部半角英文標點符號。code

太長不看版:orm

知足需求:使用js正則匹配全部半角英文標點符號(不含大小寫字母)ip

解決方案:使用正則表達式:/[\x21-\x2f\x3a-\x40\x5b-\x60\x7B-\x7F]/ci

詳細說明

通常使用正則表達式匹配標點符號的經常使用作法是並:直接在正則表達式中書寫標點符號並對須要轉義的標點符號加""進行轉義。
如匹配文章中的句號、問號和歎號(半角符號)能夠寫成:unicode

<script>
    var reg = /[\?\!\.]/;
</script>

但若是須要匹配的英文符號不是少數的幾個,而是所有,這種一個一個的寫法就顯得很臃腫。爲了解決這種寫法臃腫的問題,那咱們就能夠將目光投向另外一種正則表達式中支持的字符表示模式:ASCII碼字符。io

ASCII(pronunciation: /ˈæski/ ASS-kee,American Standard Code for Information Interchange,美國信息交換標準代碼)是基於拉丁字母的一套電腦編碼系統。它主要用於顯示現代英語,而其擴展版本EASCII則能夠部分支持其餘西歐語言,並等同於國際標準ISO/IEC 646。因爲萬維網使得ASCII廣爲通用,直到2007年12月,逐漸被Unicode取代。form

在正則表達式中既支持ASCII碼字符,同時也支持unicode碼字符,但爲了節省表達式長度,在這裏咱們選用了ASCII碼進行處理。百度

下圖爲ASCII碼的經典對照表:

標準表.jpg

引用自百度百科

好比咱們要校驗文章中的問號,使用ASCII碼編寫正則就能夠寫爲:

<script>
    var reg = /\x3F/;
</script>

並且由於半角符號在ASCII編碼中排列較爲連續,故能夠採用 "-" 進行鏈接,每一個符號具體的十六進制ASCII編碼數可經過查表獲取。最後拼成的正則表達式爲:

<script>
    var reg = /[\x21-\x2f\x3a-\x40\x5b-\x60\x7B-\x7F]/;
</script>

即能知足匹配全部半角英文符號的需求。

相關文章
相關標籤/搜索