JavaScript编程精解第九章:正则表达式
来源:互联网 发布:杜兰特2016西决数据 编辑:程序博客网 时间:2024/06/04 00:21
正则表达式是表示字符串模式的对象,使用自己的语法来表达这些模式:
- /abc/:字符序列
- /[abc]/:字符集中的任何字符
- /[^abc]/:任何不在字符集中的字符
- /[0-9]/:任何在字符范围内的字符
- /x+/::x出现一次以上,贪婪模式(尽可能多)
- /x+?/:x出现一次以上,非贪婪模式(尽可能少)
- /x*/:x出现0次以上
- /x?/:x出现0或一次
- /x{2,4}/:x出现2-4次
- /(abc)/:元组
- /a|b|c/:匹配abc中任一模式
- 使用RegExp构造函数
- 使用斜杠字符
- 使用i不区分大小写 或 g开启全局模式
差异
构造函数时,模式书写为普通字符串,因此,反斜杠使用与往常相同。(即 \ 不为转义字符的一部分时会被忽略,\ 需要转义,\b会被表示成特殊字符,需要写成\\b),
斜杠字符时,如果反斜杠不是特殊字符代码的一部分时,将会被保留,一些在正则表达式中有特殊含义的字符,需要在其以前使用反斜杠,如 new RegExp('\\bab\c\\b'); /* 相当于 /\babc\b/ */
如 //babc/+/b/; /* 表示单词 abc+ */
属性
source:包含用于创建正则表达式的字符串
lastIndex:全局模式时,指定字符串中的起始匹配位置,初始值为0。
方法
test(); //返回布尔值
exec(); //返回表示字符串信息的对象(字符串数组)或 NULL,包括匹配的字符串,分别与各分组匹配的部分字符串或undefined,index属性表示字符串成功匹配的起始位置,input属性表示验证的字符串。
回溯
进入一个分支时,匹配器会记住当前位置,若当前分值无法匹配,可以回退并尝试另一条分支。
一旦字符串与模式完全匹配,匹配器就会停止。这意味着多个分支都可能匹配一个字符串,但匹配器最后只会使用第一条分支(使用+,*等重复模式运算符时需要小心
(贪婪模式))
全局模式
但启用全局,并使用exec匹配模式时,正则表达式会自动lastIndex属性,来指向匹配后字符串后的位置。如果无法匹配,会将lastIndex清零。
若使用同一个全局正则表达式对象多次调用exec,自动更新lastIndex属性可能造成问题。正则表达式可能恰好处于前一次调用exec之后剩余字符的起始位置。
例:
var digit = /\d/g;
consple.log(digit.exec(''here it is: 1''));
// [''1''] lastIndex为13
console.log(digit.exec(''and now: 1''));
// null lastIndex为0
全局选项会改变match匹配字符串的工作方式,match会找出所有匹配模式的字符串,并返回一个包含所有匹配字符串的数组,而不是非全局模式时像exec返回的数组。
因此,使用全局正则表达式时需要倍加小心。只有确实需要全局表达式即调用replace方法时,或是需要显式使用lastIndex时。
循环匹配:由于全局模式下会自动更新lastIndex值,所以可以使用全局模式和exec循环匹配整个字符串。
字符串方法
replace:可使用正则表达式,可开启全局模式,替换字符串①可使用函数,参数分别为匹配字符串 和 各元组匹配的字符串(可选)②可使用元组 , 如 ''hopper,grace''.replace(/([\w]+),([\w]+)/, ''$2 $1''); //替换成 grace hopper;
search:参数为正则表达式,返回首先匹配的表达式的索引或-1;
match:全局模式下返回所有匹配的字符串组成的数组,非全局模式下,返回与exec返回数组格式相同(包含所有匹配元组)的数组。
- JavaScript编程精解第九章:正则表达式
- pp看书笔记---C#高级编程第九版 第九章 【字符串和正则表达式】
- 第九章:文件与正则表达式
- 第九章:用正则表达式搜索
- javascript之DOM编程正则表达式引入
- javascript 正则表达式祥解
- JavaScript 正则 正则表达式
- MYSQL必知必会读书笔记 第九章 使用正则表达式过滤数据
- Javascript 正则表达式javascript
- 第七章 正则表达式编程
- Javascript-网页编程-DHTML-表单验证技术(正则表达式)
- javascript正则表达式,jquery正则
- javascript正则表达式,jquery正则
- javascript正则表达式,jquery正则
- javascript正则表达式,jquery正则
- Javascript之正则表达式略解
- 第21章 JavaScript正则表达式应用
- javascript笔记--(第十章)正则表达式
- HDU2089 不要62 数位dp
- PathMeasure的基本使用
- JDBC使用步骤
- (CodeForces
- 如何解决“504 Gateway Time-out”错误
- JavaScript编程精解第九章:正则表达式
- 虚拟机下CentOS安装JDK
- Linux中常用操作命令
- 大话设计模式之代理模式
- VS C# WinForm对于EXCEL表的操作
- 嵌入式编程常考的无符号数和有符号数的运算问题
- 2015-2016 Northwestern European Regional Contest I.Identifying Map Tiles(超级技巧+脑洞)
- 菜鸟手记(一)
- GCC编译c语言文件