正则表达式的作用:专门用来匹配字符串
正则是一个引用数据类型:typeof 正则----->"object"
创建正则表达式的方法
//方式一:
var reg=new RegExp("匹配的字符串","匹配模式");
//方式二:
var reg=/匹配的字符串/
正则表达式的常用方法
str.match(reg)
按照指定的正则匹配,匹配出str中的符合规则的字符,如果没有则返回null
var str = 'h2ea1ven_';
var reg = /./g;
console.log(str.match(reg))//["h", "2", "e", "a", "1", "v", "e", "n", "_"]
str.replace(字符串1/正则,字符串2/fn($1,$2…))
$1、$2、…、$99指的是通过正则匹配到的第 1 到第 99 个子表达式相匹配的文本。
var str = 'ddeeff';
var reg = /(\w)\1(\w)\2(\w)\3/
console.log(str.replace(reg, function ($1, $2, $3) {
return $3 + $3 + $2 + $2 + $1 + $1
}));//ffeedd
var name = '"a", "b"';
name.replace(/"([^"]*)"/g, "'$1'");//"a", "b"
reg.exec(str)
检索字符串中指定的值。返回找到的值,并确定其位置 ,reg对象的lastIndex 属性设置为匹配文本的最后一个字符的下一个位置。
var str = "Visit W3School";
var patt = new RegExp("W3School","g");
console.log(patt.exec(str));//返回值是数组
console.log(patt.lastIndex);//14
reg.test(str)
检验字符串中有没有reg对应的规则,如果有,则返回true,如果没有,则返回false
正则表达式修饰符
修饰符的顺序是可以颠倒的
- i 忽略大小写 ignorecase
- g 全局匹配 global
表达式
只能匹配到一个字符
- [abcd] 表示匹配abcd中的任何一个数据
- [^abcd] 表示匹配除了abcd的任何数据
- [a-z] 表示匹配a-z中的任何一个数据
- [A-Z] 表示匹配A-Z中的任何一个数据
- [A-z] 表示匹配A-z中的任何一个数据
元字符
实质也是表达式,也只能匹配到一个字符
- \w ---->[0-9A-z]
- \W ----->[^\w]
- \d ---->[0-9]
- \D---->[^\d]
- \s ----> 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
- \S---->[^\d]
- . (点) ---->[^\n] 匹配除了换行符的所有任意一个字符
量词
表示数量,尽可能多匹配字符(贪婪模式),在量词后面加上?就能够取消贪婪模式
- {x} ---->匹配x个字符
- {x,y}---->匹配[x,y]个字符
- {x,}---->匹配至少x个字符
- x±—>匹配至少一个字符
- x*---->匹配至少0个字符
- x?---->匹配[0,1]个字符
var str = 'h12ea3422323v1e34n';
var reg = /\d{2,3}?/g;//匹配连续两个是数字的字符串,?取消了贪婪模式
console.log(str.match(reg));//["12", "34", "22", "32", "34"]
形容词
修饰字符n(断言)
- n$---->匹配到在结尾位置的字符n
- ^n---->匹配到在开头位置的字符n
- x(?=n)---->匹配到后面紧跟着字符n的x
- x(?!n)---->匹配到后面没有紧跟着字符n的x
- (?<=n)x---->匹配到前面紧跟着字符n的x
- (?<!n)x---->匹配前面没有紧跟着字符n的x