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>

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

相关文章
相关标签/搜索