资讯专栏INFORMATION COLUMN

JS系列之正则

ckllj / 2642人阅读

摘要:反向引用当一个正则表达式被分组之后,每一个组将自动被赋予一个组号,该组号可以代表该组的表达式。对象方法接受一个字符串参数,如果正则表达式与指定的字符串匹配返回否则返回同样接受一个字符串为参数,返回一个数组,其中存放匹配的结果。

创建方式

字面量创建方式

 var reg = /pattern/flags;

实例创建方式

 var reg = new RegExp(pattern, flags);

字面量创建方式和构造函数创建方式的区别:
1.字面量创建方式不能进行字符串拼接,实例创建方式可以

var regParam = "cm";
var reg1 = new RegExp(regParam+"1");
var reg2 = /regParam/;
console.log(reg1);   // /cm1/
console.log(reg2);   // /regParam/

2.字面量创建方式特殊含义的字符不需要转义,实例创建方式需要转义

var reg1 = new RegExp("d");  //    /d/ 
var reg2 = new RegExp("d")  //   /d/
var reg3 = /d/;              //  /d/
修饰符
i   ignoreCase 忽略大小写
g   global 全局匹配
m   multiline 多行匹配

RegExp 对象属性:

let reg = /abc/igm;
reg.global  //true
reg.ignoreCase  //true
reg.multiline  //true
元字符 位置元字符
^     匹配字符串的开始
$     匹配字符串的结束
    匹配单词的开始或结束
B    匹配非单词边界
G    上一个匹配的结尾(本次匹配开始)
A    字符串开头(类似^,但不受处理多行选项的影响)
    字符串结尾或行尾(不受处理多行选项的影响)
z    字符串结尾(类似$,但不受处理多行选项的影响)
基本元字符
     在非特殊字符之前的反斜杠表示下一个字符是特殊的
|     逻辑或操作符
[]    定义一个字符集合,匹配字符集合中的一个字符,在字符集合里面像 .,这些字符都表示其本身
[^]   对上面一个集合取非
-     定义一个区间,例如[A-Z],其首尾字符在 ASCII 字符集里面
()    分组,将相关的元素归拢,构成单个元素;多选结构,(...|...),规定可能出现的多个子表达式;引用分组,存储子表达式匹配文本,供之后引用。
特殊元字符
.     匹配除了换行符之外的任何单个字符
d    0~9任意一个数字
D    非0~9之间的任意字符
w    匹配包括下划线的任何单词字符
W    匹配任何非单词字符
S    非空字符
s    不可见字符,如空格、回车、制表符
a|b      a或者b任意一个

[abc]    a或b或c任意一个
[^abc]   除了ac之外的

[a-z]    表示a到z中任意一个字母 [0-9]等价于d
[^a-z]
量词
*        重复零次或更多次
+        重复一次或更多次
?        重复零次或一次
{n}      重复n次
{n,}     重复n次或更多次
{n,m}    重复n到m次
字符类
	 Tab

 换行符

 回车符
f 换页符
e Escape
贪婪与非贪婪模式

贪婪匹配: 正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配
非贪婪匹配:就是匹配到结果就好,最少的匹配字符

默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。
反向引用

当一个正则表达式被分组之后,每一个组将自动被赋予一个组号,该组号可以代表该组的表达式。其中组号的编制规则为:从左到右、以分组的左括号“(”为标识,第一个分组的组号为1,第二个分组的组号为2,依此类推。

“
umber”中的number就是组号

regex=(abc)d1可以匹配字符串abcdabc,即1表示把获取到的第一组再匹配一次,如下:
let regg = /(abc)d1/;
"abcabcdbc".match(regg);    //["abcdabc", "abc", index: 3, input: "abcabcdabc", groups: undefined]
预搜索(零宽断言)

预搜索,又叫零宽断言,又叫环视,它是对位置的匹配,与定位字符(边界字符)类似。

(?=pattern)  断言此位置的后面能匹配表达式pattern
(?<=pattern) 断言此位置的前面能匹配表达式pattern
(?!pattern)  断言此位置的后面不能匹配表达式pattern
(?
RegExp 对象属性
lastIndex    一个整数,标示开始下一次匹配的字符位置。        
source    正则表达式的源文本。
RegExp 对象方法 test

test接受一个字符串参数,如果正则表达式与指定的字符串匹配返回 true 否则返回 false

let reg = /^Hello/

reg.test("Hello World") // => true
reg.test("Say Hello") // => false
exec

exec同样接受一个字符串为参数,返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

let reg = /([a-z])d+/
let str = "a233"
let result = reg.exec(str)   // ["a233", "a", index: 0, input: "a233"] 

// 0:"a233" 表示我们捕获到的字符串
// 1:"a" 表示我们捕获到的分组字符串
// index:0 表示捕获开始位置的索引
// input 表示原有的字符串

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/100650.html

相关文章

  • 前端文档收集

    摘要:系列种优化页面加载速度的方法随笔分类中个最重要的技术点常用整理网页性能管理详解离线缓存简介系列编写高性能有趣的原生数组函数数据访问性能优化方案实现的大排序算法一怪对象常用方法函数收集数组的操作面向对象和原型继承中关键词的优雅解释浅谈系列 H5系列 10种优化页面加载速度的方法 随笔分类 - HTML5 HTML5中40个最重要的技术点 常用meta整理 网页性能管理详解 HTML5 ...

    jsbintask 评论0 收藏0
  • 前端文档收集

    摘要:系列种优化页面加载速度的方法随笔分类中个最重要的技术点常用整理网页性能管理详解离线缓存简介系列编写高性能有趣的原生数组函数数据访问性能优化方案实现的大排序算法一怪对象常用方法函数收集数组的操作面向对象和原型继承中关键词的优雅解释浅谈系列 H5系列 10种优化页面加载速度的方法 随笔分类 - HTML5 HTML5中40个最重要的技术点 常用meta整理 网页性能管理详解 HTML5 ...

    muddyway 评论0 收藏0
  • 正则表达式

    摘要:本文内容共正则表达式火拼系列正则表达式回溯法原理学习正则表达式,是需要懂点儿匹配原理的。正则表达式迷你书问世了让帮你生成和解析参数字符串最全正则表达式总结验证号手机号中文邮编身份证地址等是正则表达式的缩写,作用是对字符串执行模式匹配。 JS 的正则表达式 正则表达式 一种几乎可以在所有的程序设计语言里和所有的计算机平台上使用的文字处理工具。它可以用来查找特定的信息(搜索),也可以用来查...

    bang590 评论0 收藏0
  • JavaScript系列(四) - 收藏集 - 掘金

    摘要:函数式编程前端掘金引言面向对象编程一直以来都是中的主导范式。函数式编程是一种强调减少对程序外部状态产生改变的方式。 JavaScript 函数式编程 - 前端 - 掘金引言 面向对象编程一直以来都是JavaScript中的主导范式。JavaScript作为一门多范式编程语言,然而,近几年,函数式编程越来越多得受到开发者的青睐。函数式编程是一种强调减少对程序外部状态产生改变的方式。因此,...

    cfanr 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<