美文网首页
正则表达式

正则表达式

作者: Mcq | 来源:发表于2019-12-14 20:07 被阅读0次

一个听起来很神奇的名字,正则是啥,正则表达式又是个啥。
其实它就是一个模子,模具。它是独立于JavaScript的,任何编程语言中都可以使用。


1.元字符

​ 元字符就是,在正则表达式中具有特殊含义的字符。

元字符 说明
\d 匹配数字 [0-9]
\D 匹配非数字 [^0-9]
\w 匹配字母或数字或下划线_ [A-Za-z0-9_]
\W 匹配非字母、数字、下划线_ [^A-Za-z0-9_]
\s 匹配空白符(空格) [ \r\t\f\n\v]
\S 匹配非空白符 [^ \r\t\f\n\v]
. 匹配任意除了换行符(回车键)之外的单个字符

2. 限定符

控制字符出现的次数。

对字符个数限制

限定符 说明
n* 匹配任何包含零个或多个 n 的字符串。n{0,}
n+ 匹配任何包含至少一个 n 的字符串。{1,}
n? 匹配任何包含零个或一个 n 的字符串。{0,1}
n{x} 匹配包含 x 个 n 的序列的字符串
n{x,} 匹配包含至少 x 个 n 的序列的字符串。
n{x,y} 匹配包含 至少x个 至多 y 个 n 的序列的字符串。
n$ 匹配任何结尾为 n 的字符串
^n 匹配任何开头为 n 的字符串

注意:^正则表达式$ 使用时,会对字符串整体校验,完全符合才能够匹配。否则,不匹配。

注意:针对花括号中次数限制,在去匹配字符串时,首先是从前先后匹配,先按照至多次数匹配,若至多不符合要求,则再按照较少的匹配。

注意:针对花括号中次数限制至少是0时,此时若字符串中没有匹配的项是符合要求的,若字符串中的字符不匹配也是符合要求的。

3. 中括号

一个中括号就代表一个字符,中括号的目的就是控制了一个字符的==范围==。

对象字符种类限制

中括号 说明
[abc] 查找一个方括号之间的任何字符。
[ ^abc] 查找一个任何不在方括号之间的字符。^在中括号中有取反的意思
[0-9] 查找一个任何从 0 至 9 的数字。
[a-z] 查找一个任何从小写 a 到小写 z 的字符。
[A-Z] 查找一个任何从大写 A 到大写 Z 的字符。
[A-z] 查找一个字母(包含大小写和下划线)
[\u4e00-\u9fa5] 查找一个汉字

​ 在匹配时,从前向后按照【规则】去找,若是全局匹配,前面若有满足项时,后面再匹配时,从满足项下一个开始匹配。

4. 或模式

特殊符号:正则1|正则2, 或者。 符合或两边其中一个就可以匹配。

如:google,baidu,bing; // 匹配三种其中一种字符串

正则:google|baidu|bing

5 分组模式

特殊符号:(正则);

组指的是一个小集体,分组就是将一个大集体可以分成几个小集体。

如:控制你的名字连续出现的次数,最少1次,最多3次

正则:^(bruce){1,3}$

6. 修饰符

g
​ g,全称global,有 全局 的意思,表示全局匹配。
如: var reg = /hello/g;
i
i,全称ignore,有 忽视、忽略 的意思,表示匹配字母时,可以忽略字母的大小写。
​ 如: var reg = /hello/i;

gi
gi,全局匹配和忽略大小写一起使用。
如: var reg = /hello/gi;

7.正则转义符

.在正则中表示特殊符号。去除.的特殊意义,需要转义: \.

举点例子

  • 验证邮箱

    ^\w+@\w+\.\w+$

    ^\w+@\w+\.[a-z]{2,3}$

  • 验证身份证号(17为数字加一个数字或X)

    ^\d{17}[\dX]$

    ^\d{17}(\d|X)$

  • 验证手机号(11位数字)

    ^\d{11}$

  • 验证日期 2018-10-10

    ^\d{4}-\d{1,2}-\d{1,2}$

  • 验证IP XXX.XXX.XXX.XXX

    ^\d{1,3}\(.\d{1,3}){3}$

    \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}

五. js中使用正则表达式

5.1 正则表达式对象

  • 创建正则表达式对象

    • 方式1:

      • 语法:
        var 变量 = new RegExp(“规则”,”修饰符”);

      • 代码:

        var reg = new RegExp('\\d','g');
        
    • 方式2: 推荐使用

      • 语法:
        var 变量 = /正则表达式/;

      • 代码:

        var reg = /\d/g;
        
  • 检测匹配

    • 正则对象.==test(字符串)== ; 用于检测字符串是否==匹配== 某个规则。返回true和false。 【重点 】

5.2 字符串对象方法相关正则使用

  • 字符串.match(正则对象);
    获取匹配正则的子字符串,返回一个数组。
  • 字符串.replace(正则对象,替换后的内容);
    ​ 替换所匹配正则的子字符串。返回替换后的字符串。

.过于极端,因为他可以回车键之外的单个符,用[]指定一定的范围则是更加平衡选择
? 标识0或一个,可以用于非贪婪匹配
\w等于[A-Za-z0-9_]
反之\W等于[^A-Za-z0-9_].

5.3positive lookahead and negative lookahead.(正向查找和反向查找)

(?=...)正向查找,查找该模式但不匹配。

(?!...)反向查找,排除该模式但不匹配。

let quit = "qu";
let noquit = "qt";
let quRegex= /q(?=u)/;
let qRegex = /q(?!u)/;
quit.match(quRegex); // Returns ["q"]
noquit.match(qRegex); // Returns ["q"]

// 常用于密码匹配
let password = "abc123";
let checkPass = /(?=\w{3,6})(?=\D*\d)/;  // 三到六个字符,至少包含一个数字
checkPass.test(password); // Returns true

相关文章

  • Linux命令行与Shell脚本编程大全-shell正则表达式

    本章内容: 定义正则表达式 了解基本正则表达式 扩展正则表达式 创建正则表达式 定义正则表达式 正则表达式是你定义...

  • 正则相关

    正则表达式基本语法 正则表达式常见字符 正则表达式特殊字符 正则表达式数量词 正则表达式边界匹配 正则表达式逻辑或...

  • 正则表达式系列-1

    正则表达式系列-1正则表达式系列-2正则表达式系列-3正则表达式系列-4 什么是正则表达式 正则表达式就是用事先定...

  • 正则表达式

    正则表达式 - 教程正则表达式 - 简介正则表达式 - 语法正则表达式 - 元字符正则表达式 - 运算符优先级正则...

  • Python基础入门 - 正则表达式与综合实战

    1. 初识正则表达式 1.1 介绍 步骤介绍正则表达式入门及应用正则表达式的进阶正则表达式案例 1.2 正则表达式...

  • Java正则表达式参考

    Java正则表达式入门 java正则表达式应用 深入浅出之正则表达式(一) 深入浅出之正则表达式(二) 正则表达式...

  • 正则表达式

    正则表达式 正则表达式就是记录文本规则的代码 正则表达式常用的元字符 正则表达式常用的限定符 正则表达式举例:这里...

  • Python爬虫(十)_正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • python正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • 正则表达式

    了解正则表达式基本语法 能够使用JavaScript的正则对象 正则表达式简介 什么是正则表达式 正则表达式:用于...

网友评论

      本文标题:正则表达式

      本文链接:https://www.haomeiwen.com/subject/xcsdfctx.html