IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 浅谈JavaScript正则表达式的模式匹配 -> 正文阅读

[JavaScript知识库]浅谈JavaScript正则表达式的模式匹配

正则表达式的模式匹配

正则表达式是一个描述字符模式的对象

正则表达式的定义

  • 使用正则表达式字面量定义(脚本加载后,会被编译,不变时,性能更好)

    • var pattern = /s$/;
  • 调用RegExp对象的构造函数定义(在脚本运行过程中,会被编译)

    • var pattern = new RegExp(“s$”);

直接量字符

  • 正则表达式所有字母和数字都是按照字面含义进行匹配的
  • JavaScript正则表达式语法也支持非字母的字符匹配,这些字符需要通过反斜线(\)作为前缀进行转义

正则表达式直接量的每次计算都会创建一个新的RegExp对象,每个新的对象都有自己的lastIndex属性

正则表达式中的直接量字符

字符匹配
字母和数字字符自身
\oNUL字符(\u0000)
\t制表符(\u0009)
\n换行符(\u000A)
\v垂直制表符(\u000B)
\f换页符(\u000C)
\r回车符(\u000D)
\xnn由十六进制数nn指定的拉丁字符,例如,\x0A等价于\n
\uxxxx由十六进制数xxxx指定的Unicode字符,例如,\u0009等价于\t
\cx控制字符^X,例如,\cJ等价于换行符\n

字符类

将直接量字符单独放进方括号内就组成了字符类

  • 一个字符类可以匹配它所包含的任意字符

  • 字符类可以使用连字符来表示字符范围 例如,要匹配拉丁字母表中的小写字母 /[a-z]/

正则表达式中的字符类

字符匹配
[…]方括号内的任意字符
[^…]不在方括号内的任意字符
.除换行符和其他Unicode行终止符之外的任意字符
\w任何ASCII字符组成的单词等价于 [a-zA-Z0-9]
\W任何不是ASCII字符组成的单词等价于 [^a-zA-Z0-9]
\s任何Unicode空白符
\S任何非Unicode空白符
\d任何ASCII数字等价于 [0-9]
\D除了ASCII数字之外的任何字符,等价于 [^0-9]
[\b]退格直接量(特例)

重复

贪婪的 非贪婪后面加+

正则表达式的重复字符语法

字符含义特殊
{n , m}匹配前一项至少n次,但不能超过m次
{n , }匹配前一项n次或者更多次
{n}匹配前一项n次
匹配前一项0次或者1次,等价于 {0 , 1}可能与其匹配0个字符串
+匹配前一项1次或者多次,等价于 {1, }
*匹配前一项0次或者多次,等价于 {0, }可能与其匹配0个字符串

选择,分组的引用

正则表达式的选择,分组的引用字符

字符含义
选择,匹配的是该字符串左边的子表达式或右边的子表达式(从左到右)
(…)组合,将几个项组合为一个单元,这个单元可通过“*” “+” “?”和 “”等符号加以修饰,而且可以记住和这个组合相匹配的字符串以供此后的引用引用
(?:…)只组合,把项组合到一个单元,但不记忆和这个组合相匹配的字符串/([Jj]ava(?:[Ss]cript)?)\sis\s(fun\w*)/在这个正则表达式中\2引用了与(fun\w*)匹配的文本
\n和第n个分组第一次匹配的字符相匹配,组是圆括号中的子表达式(也有可能是嵌套的),组索引是从左到右的左括号数,“(?:”形式的分组不编码/(’")[^’"]*\1/要求左右侧引号相匹配

指定匹配位置

正则表达式中的锚字符

字符含义
^匹配字符串的开头,在多行检索中,匹配一行的开头/^Script$/匹配单词 Script 啥都不可以多
$匹配字符串的结尾,在多行检索中,匹配一行的结尾/^Script$/匹配单词 Script 啥都不可以多
\b匹配一个单词的边界,就是位于字符\w和\W之间的位置(注意!,[\b] 匹配的是退格符)
\B非边界/\B[Ss]cript/与Javascript匹配但不与 script匹配
(?=p)零宽正向先行断言,要求接下来的字符都与p匹配,但不能包括匹配p的那些字符var reg8 = /1cript(?=:)/g;var str = “Script:”;console.log(str.match(reg8))
(?!p)零宽负向先行断言,要求接下来的字符都不与p匹配

修饰符

正则表达式修饰符

字符含义
i执行不区分大小写的匹配
g执行一个全局匹配
m多行匹配模式 ^ $ 代表每行的开头和结尾

用于模式匹配的String方法

search()方法

返回第一个与之匹配的子串的起始位置

特性:

1.不支持全局检索忽略正则表达式参数中的修饰符g

2.如果参数不是正则表达式,则首先会通过RegExp构造函数转换为正则表达式

例: “JavaScript”.search(/script/i); //4

replace()方法

执行检索与替换操作

特性:

1.支持全局检索

2.如果参数不是正则表达式,则直接搜索这个字符串,不会转换

例: str.replace(/javascript/ig, “JavaScript”); //str字符串中所有javascript替换为JavaScript

match()方法

返回一个由匹配结果组成的数组

特性:

1.支持全局检索

2.如果执行的不是全局检索,也返回一个数组,数组的第一个元素是匹配的字符串,余下的元素是正则表达式中用圆括号括起来的子表达式。

例:

“1 wwx 3 qwer rwe 2”.match(/\d+/g); //[“1”, “3”, “2”]

split()方法

将指定字符串拆分成由子串组成的数组

例: “1, 2, 3, 4, 5”.split(/\s*,\s*/); //[“1”, “2”, “3”, “4”, “5”]

RegExp对象

RegExp构造函数有两个参数

var pattern = new RegExp(“s$”, “g”);

RegExp的属性

  • source属性

是一个只读的字符串,包含正则表达式的文本

  • global属性

只读的布尔值,说明该正则表达式是否带有修饰符g

  • ignoreCase属性

只读的布尔值,说明该正则表达式是否带有修饰符i

  • multiline属性

只读的布尔值,说明该正则表达式是否带有修饰符m

  • lastIndex属性

可读可写的整数,如果有修饰符g,这个属性储存在整个字符串中下一次检索开始的位置

会被exec() test()方法 用到

RegExp的方法

  • exec()

  • test()


  1. Ss ??

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-03 11:05:05  更:2021-08-03 11:06:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 4:52:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码