RegExp对象:
1.创建语法
- 字面量法:
var reg = /word/igm;
- 构造函数法:
new RegExp('345oiu','img') new RegExp(/\d/ig)
2.修饰符
var reg = /word/igm
i 表示忽略大小写
g 全文查找
m 执行多行匹配,就是^和$不仅匹配字符串的开头和结尾,而且也匹配一行的开头和结尾
o,\n 直接量字符
4.字符类
又叫字符集合,语法[直接量字符若干]
例如:[abc]或者[范围]
[a-z0-9]字符类中的任意单个字符能够与某个子字符串匹配,那么就认为整个字符类与该子字符串匹配。
5.反义
[……]与[^……]
参见: ^
注意:脱字符(^)必须出现在字符类中的第一个字符位置时,才表示反义,否则,只表示脱字符本身。
-
\d与\D \d代表任意单个阿拉伯数字。\D代表任意单个非阿拉伯数字。
-
\w与\W \w任意单个单词字符。\W任意单个非单词字符。单词字符指的是:阿拉伯数字、英文字母、下划线( _ )。
-
\s与\S \s表示任意单个非打印字符。\S表示任意单个可见字符。
-
\b与\B \b表示单词边界。\B表示非单词边界。注意:单词边界是个位置,不是空格或其它字符
6.转义
6.1.正则中的捺斜杠(\)通常有特殊语法。 例如:\d表示单个阿拉伯数字,并不表示一个斜杠和一个字母d;又如:\w表示任意单个单词字符,也不表示一个斜杠和一个字母w。 6.2.转义的语法:在要被转义成普通字符的字符的左侧添加捺斜杠。 例如:var reg = /\/ig;能够匹配捺斜杠本身。
7.限定符
用于限制限定符左侧紧挨着的单个字符(或子表达式)重复的次数。 7.1.? 表示紧挨着它的左侧的单个字符出现0次或1次。 7.2.+ 表示紧挨着它的左侧的单个字符出现至少1次。 7.3.* 表示紧挨着它的左侧的单个字符出现至少0个,最多不限。 7.4.{n} n表示大于或等于零的整数,{n}表示紧挨着它的左侧的单个字符或子表达式出现n次。 7.5.非贪婪模式 匹配时尽可能少的占用字符。只要关闭了贪婪模式,就进入了非贪婪模式。关闭贪婪模式的方法是:在限定符的后面加一个问号(?)即可。
8.定位符
8.1.^ 参见: [……]与[^……] 在单行模式下,表示字符串的开始位置。注意,并不是第一个字符,而是第一个字符的左边的位置。在多行模式下,表示字符串的开始位置和一行的开始位置。 8.2.$ 在单行模式下,表示字符串的结束位置。注意,并不是最后一个字符,而是最后一个字符的右边的位置。在多行模式下,表示字符串的结束位置和一行的结束位置。 8.3.\b 单词边界。 8.4.\B 非单词边界。
9.选择与分组
9.1.分组 用一对小括号包围的模式,就被编为了一组。例如:var reg = /(zo)+/ig;其中zo被编为一组,被后面的限定符整体限定。 9.2.选择 就是“或者”的意思。用“|”表示。例如:
10.子表达式 经过分组后,每个组都看做是一个“子表达式”。
10.1.捕捉 捕捉的意思是:当每次发生与整个正则表达式匹配的时候,都在匹配项中存在与子表达式匹配的项,这些项一般称为“子匹配”,这些子匹配默认会被自动保存(保存在一个称为“全局正则表达式对象”的属性中),把子匹配自动保存的过程,就被称为捕捉。被捕捉的子匹配可以在后续程序中使用。
在父字符串查找匹配子字符(字表达式)叫做捕捉,存在了RegExp全局对象属性(9, 9里面存的值是默认空字符串)中 如:'nregrt好啊'.replace(/<(\w+)>.*</\1>/ig,'你好')=>你好好啊; \1表示后向引用 \1 === ,\1引用的里面的值
10.2.非捕捉: 当仅想给正则表达式分组,而不想捕捉子匹配时,那么就要关闭捕捉功能。做法是在小括号中开头部分写好英文的问号和冒号。例如:var reg = /^0?1(?:3|4|5|7|8)\d{9}$/ig;中的小括号就是非捕捉性的子表达式
11.后向引用:
在正则表达式的模式中,用 \1 表示对第一个子匹配的引用,用 \2 表示对第二个子匹配的引用, \3表示第三个……例如:/(\w+).*\1/中的 \1 就表示对左边小括号中的子表达式的引用。但是,如果没有捕获子匹配,那么这些 \1 , \2 ,\3 ……等就不代表后向引用。
12.全局RegExp对象及其$x属性
13.预查 13.1.正向预查: 又叫零宽正向先行断言。例如:var reg = /windows(?=\d+)/;能够匹配后面跟着若干数字的windows,却不能匹配后面没有数字的windows。注意:只匹配windows,而不匹配后面的数字,所以预查不消耗字符。
13.2.负向预查 又叫零宽负向先行断言。例如:var reg = /windows(?!\d+)/;能够匹配后面没有数字的windows,却不能匹配后面跟着若干数字的windows。注意:只匹配windows,而不匹配后面的数字,所以预查不消耗字符。
14.正则匹配三原则
14.1.从左往右 14.2.贪婪模式 14.3.尽量匹配 用英文句点(.)表示除换行符(\n)之外的任意单个字符。 要匹配包括换行符在内的任意单个字符,建议用[\s\S]表示
注意:不要将全局 RegExp 对象与 正则表达式 对象混淆。尽管听起来像是一回事,但它们是截然不同的。全局 RegExp 对象的属性包含不断更新的关于每个匹配出现的信息,而正则表达式对象只包含出现正则表达式匹配的信息。
支持正则表达式的 String 对象的方法方法: search 检索与正则表达式相匹配的值。返回值:父串或reg匹配的子串的起始位置。 匹配不到return -1; 参数为空: return 0
match 在父中找到一个或多个正则表达式的匹配或在父字符串内检索指定的值, 返回指定的值(一个数组); 没有找到任何匹配的文本将返回 null 参数为空 返回 0:'',length:1;input:原对象
replace 替换与正则表达式匹配的子串。 split 把字符串分割为字符串数组。
regExp对象的方法: exec(string)方法用于检索字符串中的正则表达式的匹配。和match方法相似 找到了匹配的文本,则返回一个结果数组。否则,返回 null
new RegExp('op','img').exec('opop');op是否存于opop中