hn-failte's blog hn-failte's blog
首页
  • 前端文章

    • JavaScript
    • Vue
    • React
    • Webpack
    • 混合开发
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《React》笔记
    • 《TypeScript 从零实现 axios》
    • 《Git》学习笔记
    • TypeScript笔记
    • JS设计模式总结笔记
  • HTML&CSS
  • HTML
  • CSS
  • CSS预处理
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 算法
  • 数据库
  • 操作系统
  • 工具
  • 学习
  • 面试
  • 心情杂货
  • 前端相关
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

hn-failte

前端cv仔
首页
  • 前端文章

    • JavaScript
    • Vue
    • React
    • Webpack
    • 混合开发
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《React》笔记
    • 《TypeScript 从零实现 axios》
    • 《Git》学习笔记
    • TypeScript笔记
    • JS设计模式总结笔记
  • HTML&CSS
  • HTML
  • CSS
  • CSS预处理
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 算法
  • 数据库
  • 操作系统
  • 工具
  • 学习
  • 面试
  • 心情杂货
  • 前端相关
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Webpack

  • React

  • JavaScript

    • new命令原理
    • ES5面向对象
    • ES6面向对象
    • 多种数组去重性能对比
    • JS随机打乱数组
    • 判断是否为移动端浏览器
    • 将一维数组按指定长度转为二维数组
    • 防抖与节流函数
    • JS获取和修改url参数
    • 比typeof运算符更准确的类型判断
    • 三级目录

    • JavaScript

      • JavaScript之函数尾调用与函数尾递归
      • 一种实现call、apply、bind的方法
      • 实现call、apply、bind
      • JavaScript闭包详解
      • 窗口间的通信与iframe跨域
      • JavaScript逻辑运算符“&&”和“||”短路原则的应用
      • Object原型梳理
      • JavaScript设计模式之发布&订阅模式
      • JavaScript核心:两链一包
      • JavaScript之正则
        • JavaScript正则
        • 目录
        • 构造正则表达式
        • 正则查找模式
        • 常用的正则式
        • 常见的坑
      • 字符串拼接性能优化
      • JavaScript变量转换
  • Vue

  • 混合开发

  • 学习笔记

  • 微信小程序

  • 前端
  • JavaScript
  • JavaScript
hn-failte
2018-01-10

JavaScript之正则

# JavaScript正则

# 目录

  • 构造
  • 查找模式
    • 方括号
    • 元字符
    • 量词
    • RegExp 对象方法
    • 支持正则表达式的 String 对象的方法
    • 方括号
  • 常用正则式
    • 验证姓名
    • 验证密码
    • 验证 Email
    • 验证身份证
    • 验证手机号
  • 常见的坑

# 构造正则表达式

1、使用new创建对象

new RegExp(pattern,modifiers)

2、pattern模式

/pattern/modifiers
pattern(模式) 描述了表达式的模式
modifiers(修饰符) 用于指定全局匹配(g)、区分大小写的匹配(i)和多行匹配(m)

# 正则查找模式

1、方括号:用于查找某个范围内的字符

[abc]	查找方括号之间的任何字符。
[^abc]	查找任何不在方括号之间的字符。
[0-9]	查找任何从 0 至 9 的数字。
[a-z]	查找任何从小写 a 到小写 z 的字符。
[A-Z]	查找任何从大写 A 到大写 Z 的字符。
[A-z]	查找任何从大写 A 到小写 z 的字符。
[adgk]	查找给定集合内的任何字符。
[^adgk]	查找给定集合外的任何字符。
(red|blue|green)	查找任何指定的选项。

2、元字符:拥有特殊含义的字符

.	查找单个字符,除了换行和行结束符。
\w	查找单词字符。
\W	查找非单词字符。
\d	查找数字。
\D	查找非数字字符。
\s	查找空白字符。
\S	查找非空白字符。
\b	匹配单词边界。
\B	匹配非单词边界。
\0	查找 NUL 字符。
\n	查找换行符。
\f	查找换页符。
\r	查找回车符。
\t	查找制表符。
\v	查找垂直制表符。
\xxx	查找以八进制数 xxx 规定的字符。
\xdd	查找以十六进制数 dd 规定的字符。
\uxxxx	查找以十六进制数 xxxx 规定的 Unicode 字符。

3、量词

n+	匹配任何包含至少一个 n 的字符串。
n*	匹配任何包含零个或多个 n 的字符串。
n?	匹配任何包含零个或一个 n 的字符串。
n{X}	匹配包含 X 个 n 的序列的字符串。
n{X,Y}	匹配包含 X 至 Y 个 n 的序列的字符串。
n{X,}	匹配包含至少 X 个 n 的序列的字符串。
n$	匹配任何结尾为 n 的字符串。
^n	匹配任何开头为 n 的字符串。
?=n	匹配任何其后紧接指定字符串 n 的字符串。
?!n	匹配任何其后没有紧接指定字符串 n 的字符串。

4、RegExp 对象方法

compile	编译正则表达式。
exec	检索字符串中指定的值。返回找到的值,并确定其位置。
test	检索字符串中指定的值。返回 true 或 false。

5、支持正则表达式的 String 对象的方法

search	检索与正则表达式相匹配的值。
match	找到一个或多个正则表达式的匹配。
replace	替换与正则表达式匹配的子串。
split	把字符串分割为字符串数组。

# 常用的正则式

1、验证姓名

2到9位中文昵称

^[\u4e00-\u9fa5]{2,9}$

2、验证密码

只能是字母、数字和下划线,长度不限制:

^\w+$

允许小写字母a-z、大写字母A-Z、数字0-9、下划线_、 连接符-,且长度在6-18位数:

/^[a-zA-Z0-9_-]{6,18}$/

必须包含数字+小写字母+大写字母的密码,且长度在8-10位之间:

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

3、验证 Email

允许有一个字符符合[A-Za-z0-9_]之后可以为[A-Za-z0-9_-+.] + @ + 允许有一个字符符合 [A-Za-z0-9_] 之后可以为 [A-Za-z0-9_-.] + . + 允许有一个字符符合 [A-Za-z0-9_] 之后可以有 [A-Za-z0-9_-.] 的邮箱:

^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

4、验证身份证

18位身份证号,尾数是数字或者字母X:

^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$

15或者18位身份证号,尾数可以是数字及X或者x:

(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)

5、验证手机号

以 1 开头,第二位数是 3/4/5/7/8 的 11 位手机号码:

^1[3,4,5,7,8,9]\d{9}$

移动号码:

^134[0-8]\d{7}$|^(?:13[5-9]|147|15[0-27-9]|178|1703|1705|1706|18[2-478])\d{7,8}$

电信号码:

^(?:133|153|1700|1701|1702|177|173|18[019])\d{7,8}$

联通号码: ^(?:13[0-2]|145|15[56]|176|1704|1707|1708|1709|171|18[56])<d>7,8


# 常见的坑

在[A-Z]与[a-z]中存在其他字符,[A-z]的准确表述为

[A-Z][a-z]

w3c学习链接 (opens new window)

编辑 (opens new window)
#RegExp
上次更新: 2021/08/05, 12:37:41
JavaScript核心:两链一包
字符串拼接性能优化

← JavaScript核心:两链一包 字符串拼接性能优化→

最近更新
01
基于 Taro 的微信小程序优化指南
02-16
02
搭建一个极简混合开发架构
08-03
03
使用State Hook
04-06
更多文章>
Theme by Vdoing | Copyright © 2017-2023 hn-failte | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式