分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

js-进阶 正则表达式

发布时间:2023-09-06 01:31责任编辑:赖小花关键词:js正则

正则表达式

1、为什么需要正则表达式

因为我们常常要对用户输入的字符串进行匹配,看用户输入是否符合我们的要求

2、什么是正则表达式

所谓正则表达式,就是用于字符串中的 信息进行查找,替换和提取等操作。

创建正则表达式的方式,有两种,字面量,对象创建

字面量创建:

语法:let parttern=/正则规则/模式修正符

reg.test()

对象创建:

语法:let = new RegExp(”正则规则”,”模式修饰符”);

3、正则表达式的组成部分

如果是字面量创建正则的方式,正则可以分为4个部分:定界符//,原子at,元字符,模式修正符(前两个必须要写)

如果是对象方式创建的正则,那么就由3个部分组成:原子、元字符、模式修正符

4、定界符

就是约定正则表达式开始和结束的地方,使用的是一个斜杠(/)

5、原子

原子就是普通的字符,换句话说,正则里面写了什么原子,那么字符串就必须要出现这个字符。

6、元字符

就是有特殊含义的字符(+*?)

7、模式修正符

对正则表达式进行一定的扩充

i就是一个模式修正符,它可以忽略大小写

正则表达式类型和数组相同,无论哪种方式创建,返回类型都是object

元字符作为原子

方法很简单,元字符前面添加一个转译字符(\)

8、元字符具体符号

(1)字符组

使用方括号来进行表示。代表方括号里面的原子出现一个即可

let reg=/[abcd]/;

console.log(reg.test(“acc”));

范围:在字符组里面,正则表达式使用一个-来表示范围,可以简化字符组。

1.1 范围按照的是ASCLL码从小到大的排序,所以不能反着写。

1.2 在一个字符组里面可以书写多个范围

1.3 -只有在字符组里面才代表范围,如果出了字符组,那代表它原来的意思

排除:主要用于字符组里面,代表除了什么之外,用来表示^来表示

【^ 0-9】 

排除符号书写在【后面,如果书写的位置不在它后面,则不代表排除,而代表它原来的意思

(2) 简记

对于0-9 ,a-z这种常用的,正则里面提供了默认的简单书写方式

\d:等同于[0-9],用于匹配数字  

\D:等同于[^0-9],匹配非数

let reg=/^\dab/;

\s:代表匹配空白字符

\S:匹配非空白字符

\w:匹配数字字母下划线,等同于[0-9A-Za-z_]

\W:匹配非数字字母下划线。等同于[^0-9A-Za-z_]

(3) 点符号

点是匹配除了回车,换行,制表符以外的任意字符

匹配任意字符: [\d\D]  [\w\W]   [\s\S]

(4) 量词 (就是指的前面那个字符)

指定一个东西匹配多少次

{n} 匹配n次

{n.m}匹配至少n次,最多m次;

{n,}匹配至少n次

?可以出现,也可以不出现,相当于{0,1}

  • 至少出现1次,或者1次以上 相当于{1, }

* 匹配0次或者多次 相当于 {0, }

贪婪模式和懒惰模式

贪婪模式:默认情况喜爱,量词的匹配都是贪婪模式,所谓贪婪,就是指能匹配多少个,就匹配多少个。(默认)

reg.exec(str);

懒惰模式:只要匹配上一个,就返回,后面的不再进行匹配

开启懒惰模式,只需要在量词后面添加一个?即可

(5)括号

两个功能:分组和引用

分组:就是将小原子组合成一个大的原子

let  reg=/(ab){2}/;

捕获:括号不仅用于分组,还会保存每个分组所匹配的文本。等到匹配完成之后,可以引用捕获到的文本,通过$数字,默认是9个,分别对应$1-$9

RegExp.$ 1.2.3….

let reg=/(\d{4})-(\d{2})-(\d{2})/;

console.log(reg.test("2017-11-20"));

console.log(RegExp.$1);

console.log(RegExp.$2);

console.log(RegExp.$3);

反向引用:首先,这个还是和捕获的内容有关。我们可以对捕获的内容进行一个反向的引用,通过\数字来引用括号里面的内容

let reg=/(ab)(cd)\2/;

console.log(reg.test("abcdcd"))//true

非捕获(跳过某一个子表达式)使用?:   括号称为子表达式

let reg=/(?:ab)(cd)\1/;

console.log(reg.test("abcdcd"))//

()起始和结束****

如果是开始,使用^,如果是结束,使用$

let reg=/^\d{6}$/;

console.log(reg.test("610000"))

//匹配用户名  字母开头 5-8 长度不小于5

let reg=/^[a-z]\w{4,7}$/i;

选择:或者  |

需要注意:选择(|)的优先级是最低的,所以上看的正则匹配到的是ab或者cd,而不是a和b

js-进阶 正则表达式

原文地址:http://www.cnblogs.com/opacity-m/p/8053596.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved