正则表达式
反斜杠\
- 将具有语法意义的符号转化成为普通字符
- 转移字符
- 多行字符
RegExp(正则表达式)
创建正则表达式
var = /aabb/; // 字面量的创建方式
var = new RegExp(); // 构造函数的创建方式
正则表达式是一个对象
正则表达式修饰符
i忽略大小写g全局匹配m多行匹配,能够识别多行
两个方法
-
reg.test(str)
对一个字符串对象进行判断,如果符合reg的规则就返回true,否则返回flase -
str.match(reg)
文本对象上的方法,参数为RegExp,返回一个数组,该数组中的值为满足reg的字符串
表达式
[]一个方括号代表一位,里面的值代表范围-代表范围,如0-9^放在表达式里面代表非(!)
()子表达式|或子表达式
元字符
\w单词字符,区间等于[0-9A-z_]\W非单词字符,区间等于[^\w]\d数字字符\D等于[^\d]\s空白字符[\t\n\r\v\f]\S[^\s]\b单词边界,(原来我以为单单指的是空格,但是看起来某些情况下值的不是空格)\B非单词边界\uXXXXunicode编码,一共16层\010000-\100000- . 是这个吗?
[^\r^\n],匹配除换行符之外的任何单个字符
量词
贪婪匹配原则,能多就不少
n+n这个变量可以出现1-infinite次n*n这个变量可以出现0-infinite次n?n这个变量可以出现0-1个n{X}n这个变量可以出现X个n{x, y}n这个变量可以出现x-y个,当y不写的时候,也就是x-infinite个n$以n结尾的^n以n开头的
n可以是单个的字符,也可以是一串字符,他可以是一个字符变量
RegExp方法
reg.lastIndex
记录游标的位置,为reg.exec(str)方法而存在- reg.exec(str)
每次调用该方法都只会返回一个值(不论你是否加上了修饰符g),并且每次调用都会依据reg.lastIndex这个值,来返回匹配的字符串
反向引用
var reg = /(\w)\1/g
反向引用第一个子表达式的内容,这个反向引用只能是对于子表达式来说的,至于\后面的数字表示的意思是第几个子表达式,而不是重复几个子表达式。。。
var str = "aabb";
var reg = /(\w)\1(\w)\2/g
exec方法会记录每个子表达式的匹配的内容,以及每次匹配开始的起点
string方法
str.search(reg)方法返回匹配字符串的位置,加g或者不加g都是一样的,都是只会返回第一次匹配字符串的起始位置
str.split(str)
里面可以传正则表达式str.replace(a, b)
如果参数b不是正则表达式的话,那么只能替换匹配的第一个字符串
参数b的数据格式只能为字符串,其中通过$符号可以选择子表达式
str.replace(reg, function($, $1, $2) {
return $2+$2+$1+$1;
})
参数`b`作为一个函数的话,可以接受参数,其中`$`值为匹配正则表达式的字符,`$1` `$2`则分别是第一个子表达式和第二个子表达式
正向预查
var reg = /a(?=b)/g // 选择后面接字符b的a
b只参与选择的修饰而不参与选择
?=b值为a?!b值非a
打破贪婪匹配
量词的后面加一个问号,可以打破贪婪匹配的原则,能少就不会多
var reg = /a*?/ 匹配0个a,也就是空的字符串
var reg = /a+?/ 能匹配到多个a的u也只匹配1个a

浙公网安备 33010602011771号