【专题】常用JavaScript正则表达式(regexp)汇编与示例

1 概述

1.1 前言

目前收集整理了21个常用的javaScript正则表达式,其中包括用户名、密码强度、整数、数字、电子邮件地址(Email)、手机号码、身份证号、URL地址、 IP地址、 十六进制颜色、 日期、 微信号、车牌号、中文正则等。表单验证处理必备,赶紧收藏吧!

还会陆续加入新的正则进来,大家多提宝贵意见!

2 正则列表

2.1 用户名正则

2.1.1 基本用户名正则

在做用户注册时,都会用到用户名正则校验。

定义基本用户名命名规则如下:

  • 最短4位,最长16位 {4,16}
  • 可以包含小写大母 [a-z] 和大写字母 [A-Z]
  • 可以包含数字 [0-9]
  • 可以包含下划线 [ _ ] 和减号 [ - ]
  • 首字母只能是大小写字母

查看示例程序

2.1.2 中文用户名正则

如果规则中加入允许中文用户名,则变更正则表达式如下:

其中[\u4E00-\u9FA5]是汉字的正则匹配,包括基本汉字2万多个,其中\u4E00表示汉字“一”,具体请参见《汉字unicode编码范围》。

查看示例程序

2.2 密码强度正则

上述正则表达式只能对用户密码强度进行基本的通过性判定,关于密码强度验证更多的内容可参见:基于规则评分的密码强度检测算法分析及实现

查看示例程序

2.3 数字相关正则

2.3.1 整数正则

查看示例程序

2.3.2 浮点数正则

查看示例程序

2.3.3 整数浮点数正则

可以是整数也可以是浮点数

查看示例程序

2.4 日期正则

2.4.1 出生日期正则

上述正则验证还不完善,主要是2,4,6,9,11月份的天数问题。

查看示例程序

2.4.2 通用日期正则

查看示例程序

2.5 Email正则

2.5.1 基本Email正则

基本Email正则是最常用的验证方式,也适合大多数的应用场景。从以上测试可以看出,该表达式不支持.online及.store结尾的域名。如需兼容这类域名(大于4位),调整正则结尾{2,4}的限制部分即可(例:{2,8})。另一个问题是Email用户名不能包括中文。

查看示例程序

2.5.2 中文名Email正则

根据前一正则中的问题,追加两条规则如下:

  • 用户名可以包括中文 [\u4e00-\u9fa5]
  • 域名结尾最长可为8位 {2,8}

查看示例程序

2.5.3 特定域名Email正则

在手机验证码出现之前,差不多邮箱验证是保证用户唯一性的唯一条件。而临时邮箱(也称10分钟邮箱或一次性邮箱)的出现,则使得邮箱验证及帐户激活这种机制失去了意义。而临时邮箱的地址是不可枚举的,我们只能才采取白名单的方式,只允许有限的邮箱域名通过验证。

此方法虽然能保证验证安全性,但是如果白名单太长会造成模式字符串太长。这时可以将邮箱域名白名单写成数组,利用正则表达式做初步验证,用白名单做域名的二次验证。

常用域名白名单数组:

上述白名单只列举了常用的11种邮箱域名,大家可以根据需要适当补充或删减。

查看示例程序

2.6 手机号码正则

查看示例程序

2.7 身份证号正则

上述正则只能对身份证号进行基本的通过性判定,关于公民身份号码判定的更多内容可参见文档:公民身份号码正确性判定及程序实现

查看示例程序

2.8 URL正则

查看示例程序

2.9 IP地址

2.9.1 IPv4地址正则

查看示例程序

2.9.2 IPv6地址正则

查看示例程序

2.10 十六进制颜色正则

查看示例程序

2.11 QQ号码正则

查看示例程序

2.12 微信号正则

查看示例程序

2.13 车牌号正则

查看示例程序

2.14 包含中文正则

查看示例程序

3 结尾

3.1 结语

本人水平有限,如有错误,请不吝指正!谢谢。

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复