文档章节

JavaScript权威指南笔记

d
 drei
发布于 2016/12/06 21:26
字数 1528
阅读 3
收藏 0

JavaScript的正则表达式用RegExp对象表示,可以用RegExp()构造函数来创建RegExp对象,不过RegExp对象更多的是通过一种特殊的直接量语法来创建。

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

字符 匹配
字母和数字字符 自身
\o  NUL字符(\u0000)
\t 制表符(\u0009)
\n

换行符(\u000A)

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

正则表达式的字符类

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

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

字符 含义
{n,m} 匹配前一项至少n次,但不超过m次
{n,} 匹配前一项n次或者更多次
{n} 匹配前一项n次
匹配前一项0次或者1次,也就是说前一项是可选的,等价于{0,1}
+ 匹配前一项1次或者多次,等价于{1,}
* 匹配前一项0次或多次,等价于{0,}
   

贪婪的匹配:上表列出的匹配重复字符是尽可能多地匹配,而且允许后续的正则表达式继续匹配。

非贪婪匹配:在待匹配的字符后跟随一个问号即可:“??”、“+?”、“*?”或“{1,5}?”。

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

字符 含义
| 选择,匹配的是该符号左边的子表达式或右边的子表达式
(...) 组合,讲几个项组合为一个单元,这个单元可通过该“*”、“+”、“?”和“|”等符号加以修饰,而且可以记住和这个组合相匹配的字符串以供此后的引用使用
(?:...) 只组合,把项组合到一个单元,但不记忆与该组相匹配的字符
\n 和第n个分组第一次匹配的字符相匹配,组是圆括号中的子表达式(也有可能是嵌套的),组牵引是从左到右的左括号数,“(?:”形式的分组不编码
   

正则表达式的锚字符

字符 含义
匹配字符串的开头,在多行检索中,匹配一行的开头
$ 匹配字符串的结尾,在多行检索中,匹配一行的结尾
\b 匹配一个单词的边界,简言之,就是位于字符\w和\W之间的位置,或位于字符\w和字符串的开头或者结尾之间的位置(但需要注意,[\b]匹配的是退格符)
\B 匹配非单词边界的位置
(?=p) 零宽正向先行断言,要求接下来的字符都与p匹配,但不能包括匹配p的那些字符
(?!p) 零宽负向先行断言,要求接下来的字符不与p匹配
   

正则表达式修饰符

字符 含义
i 执行不区分大小写的匹配
g 执行一个全局匹配,简言之,即找到所有的匹配,而不是在找到第一个之后就停止
m 多行匹配模式,^匹配一行的开头和字符串的开头,$匹配行的结束和字符串的结束
   

用于模式匹配的String方法:

1.search()   它的参数是一个正则表达式,返回第一个与之匹配的子串的起始位置,如果找不到匹配的子串,它将返回-1。不支持全局检索。

2.replace()方法用以检索与替换操作。其中第一个参数是一个正则表达式,第二个参数是要进行替换的字符串。若正则表达式中设置了修饰符g,那么源字符串中所有与模式匹配的子串都将替换成第二个参数指定的字符串。

//将所有不区分大小写的javascript都替换成大小写正确的JavaScript

text.replace(/javascript/gi,"JavaScript");

如果在替换字符中出现了$加数字,那么replace()将用与指定的子表达式相匹配的文本来替换这两个字符。

//一段引用文本起始于引号,结束于引号

//中间的内容区域不能包含引号

var quote = /"([^"])*)"/g;

//用中文半角引号替换英文引号,同时要保持引号之间的内容(存储在$1中)没有被修改

text.replace(quote, '“$1”';

3.match()  它的唯一参数是一个正则表达式,返回的是一个由匹配结果组成的数组。支持全局检索。例如:

"1 plus 2 equals 3".match(/\d+/g)   //返回["1", "2", "3"]

如果match()返回一个数组a,那么a[0]存放的是完整的匹配,a[1]存放的是与第一个用圆括号括起来的表达式相匹配的子串,即a[n]存放的是$n的内容,例如:

var url = /(\w+):\/\/([\w.]+)\/(\S*)/;

var text = "visit my blog at http://www.example.com/~david";

var result = text.match(url);

if(result != null) {

    var fullurl = result[0];       //包含"http://www.example.com/~david"

    var protocol = result[1];    //包含"http"

    var host = result[2];        //包含“www.example.com”

    var path = result[3];     //包含“~david”

}

4.split()   这个方法用以将调用它的字符串拆分为一个子串组成的数组,使用的分隔符是split()的参数,例如:

"123,456,789".split(",");    //返回["123", "456", "789"]

split()方法的参数也可以是一个正则表达式,例如,可以指定分隔符,允许两边可以留有任意多的空白符:

"1, 2, 3, 4, 5".split(/\s*,\s*/);      //返回["1", "2", "3", "4", "5"]

© 著作权归作者所有

共有 人打赏支持
d
粉丝 1
博文 9
码字总数 7611
作品 0
广州
私信 提问
《JavaScript权威指南》笔记(四)

第四篇笔记的内容主要涉及:javascript中的各种语句。 1. switch语句: (1)其中的case表达式采用===匹配,而不是==做匹配 (2)习惯上将default标签放在switch主体的结尾,但实际上可以放在...

小微
2012/08/28
0
2
javascript学习笔记之概要

总体以李炎恢老师的javascript视频为主,其视频简要说明了js的核心知识。 参考书籍:javascript权威指南。

风云海滩
2015/01/07
0
0
《JavaScript权威指南》笔记(二)

第二篇笔记的内容主要涉及:数据类型转换,函数、对象、数组的创建以及null与undefined的比较。 1. javascript中类型转换的方法: (1)数字-->字符串: number+" "; String(number); number...

小微
2012/08/28
0
7
分享51本关于JavaScript方面的学习书籍(免费下载)

分享51本关于JavaScript方面的学习书籍(免费下载) 1、JavaScript面向对象15分钟教程 2、原型、作用域、闭包的完整解释 3、Javascript面向对象特性实现(封装、继承、接口) 4、JavaScript面向...

邓剑彬
2012/12/02
1K
12
OSChina 第 21 期高手问答 —— ExtJS

OSCHINA 本期高手问答我们请来了《Ext JS权威指南》一书的作者 —— @黄灯桥 为大家解答关于 ExtJS 使用方面的各种问题。 黄灯桥(网名:上将军),资深Web技术专家,拥有10余年工作经验,一...

红薯
2012/06/24
6.9K
98

没有更多内容

加载失败,请刷新页面

加载更多

sql 开窗函数

开窗函数:在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成。为了解决这些问题,在 2003 年 ISO SQL 标准加入了开窗函数,开窗函数...

hblt-j
14分钟前
0
0
使用Vue动态生成form表单的实例代码

具有数据收集、校验和提交功能的表单生成器,包含复选框、单选框、输入框、下拉选择框等元素以及,省市区三级联动,时间选择,日期选择,颜色选择,文件/图片上传功能,支持事件扩展。 欢迎大家s...

嫣然丫丫丫
21分钟前
0
0
NEO区块链-DAPP开发直通车-第零篇

什么是DAPP DAPP 是以太坊发明的词汇 Decentralized Application. 目前基于区块链技术开发的应用程序广泛的接受使用了这一名称。 NEL将为开发DAPP提供全面的服务 什么是NEL NEL是 “NewEcon...

NEO-FANS
25分钟前
1
0
可视化软件VisIt在Ubuntu18.04上的安装

可视化软件VisIt在Ubuntu18.04上的安装 参考文档及使用说明 1.下载 在官网下载页面下载合适版本的安装文件,Ubuntu有专用的 https://wci.llnl.gov/simulation/computer-codes/visit/executa...

佚文
31分钟前
1
0
selenium之表格的定位

真的勇士, 敢于直面惨淡的warning、 敢于正视淋漓的error 目录 被测试网页的HTML代码 1.遍历表格所有单元格 2.定位表格中的某个元素 3.定位表格中的子元素 总结 浏览器网页常常会包含各类表...

程序猿拿Q
46分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部