正则表达式是JavaScript中用来检索字符中是否含有某个特定的字符。意思是你想查找某字符串中是否含有你想查找的字符,那么通过正则就可以帮你查找到结果。
一、 正则表达式对象
在JavaScript中怎样去使用正则,首先要了解正则表达式对象。
1.RegExp:是正则表达式的缩写。
2.定义:通过一个new的关键字去定义RegExp对象。
3.RegExp对象的方法
支持该对象的方法有四个:
(1) test()
该方法用于返回是否有检索到匹配字符,返回值true或false。
这里返回结果为:true。
(2) exec()
该方法用于返回检索到的结果,返回值为检索到的值或者null。
这里返回的结果为:a。但是被检索字符串中不止一个a,如果要返回字符串中所有的a,这时候就要用到循环了。
返回结果为a、a、a、null。这里要注意,如果检索字符中如果只有被检索字符串中所含有的字符,这个循环将死循环,这里是用没有的字符做循环结尾用。
(3) complie()
该方法是将通过正则匹配到的字符更改或替换成自己想替换成的字符。
→→
通过正则表达式匹配到字符串中的abc,然后将它替换成了123。
(4) split
该方法是将字符串拆分为数组,可以不传参数将字符串每一个字符都拆分出来,也可以传入参数用某一个字符作为拆分的位置。
比如说我定义一串字符:1a2b3c4d5e6f7g8h9,我设置split的参数为用正则匹配所有的英文字母,那么拆分出来的结果就是:[1,2,3,4,5,6,7,8,9]。
二、 语法(元字符)
在编写正则表达式时并不止有通过构造函数创建正则表达式,还可以使用字面量的方法创建。
第二句就是字面量的方法,它具有灵活性,通过各种匹配手段去匹配各种字符,比构造函数的表达式要方便很多。
要检索各种各样的字符,它里面包含了很多元字符专门去匹配,下面将列举几种原始最常见的元字符:
- 常用的元字符
(1) . :匹配除换行符以外的任意字符
(2) \w:匹配字母、数字、下划线、汉字
(3) \s:匹配任意空白符
(4) \d:匹配数字
(5) \b:匹配单次的开始或结束
(6) ^:匹配字符串的开始
(7) $:匹配字符串的结束 - 常用的限定符
(1) *:重复零次或更多次
(2) +:重复一次或更多次
(3) ?:重复零次或一次
(4) {n}:重复n次
(5) {n,}:重复n次或更多次
(6) {n,m}:重复n到m次 - 常用的反义符
(1) \W:匹配任意不是字母,数字,下划线,汉字的字符
(2) \S:匹配任意不是空白符的字符
(3) \D:匹配任意非数字的字符
(4) \B:匹配不是单词开头或结束的位置
(5) [^a]:匹配除了a以外的任意字符
(6) [^abc]:匹配除了abc这几个字母以外的任意字符 - 捕获
(1) (exp):匹配exp,并捕获文本到自动命名的组里
(2) (?exp):匹配exp,并捕获文本到名词为name的组里
(3) (?:exp):匹配exp,不捕获匹配的文本,也不给此分组分配组号 - 零宽断言
(1) (?=exp):匹配exp前面的位置
(2) (?<=exp):匹配exp后面的位置
(3) (?!exp):匹配后面跟的不是exp的位置
(4) (?<!exp):匹配前面不是exp的位置 - 注释
(1) (?#comment):该不影响正则表达式的任何处理,用于提供注释让人阅读 - 懒惰限定符
(1) *?:重复任意次,但尽可能少重复
(2) +?:重复1次或更多次,但尽可能少重复
(3) ??:重复0次或1次,但尽可能少重复
(4) {n,m}?:重复n到m次,但尽可能少重复
(5) {n,}?:重复n次以上,但尽可能少重复
还有扩展的一些常见:
(1) \a:报警字符(效果:嘀一声)
(2) \b:通常是单词分界位置,如果在字符类里使用代表退格
(3) \t:制表符
(4) \r:回车
(5) \v:竖向制表符
(6) \f:换页符
(7) \n:换行符