正则表达式

介绍

        正则表达式是regular expression(规则表达式),就是定义字符串规则的表达式,语法基于一种古老的perl语言,它描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

        正则表达式并不是只有前端才有,很多后端语言也都支持正则,正则本身是独立于语言之外的。当初的浏览器是用来浏览一些新闻之类的文字信息,那么对于字符串的操作就比较重要了,比如验证表单,模糊搜索等。

语法

第一种  new创建正则

1 var reg=new RegExp(‘a‘)
2 var str=‘abcdefg‘;
3 console.log(reg.test(str));  // 返回bool值true,代表是否匹配成功

第二种  字面量创建正则

        字面量定义正则的话两条斜线之间的任意字符都是有含义的,都会纳入到正则判断里

var reg = /a/
var str=‘abcdefg‘;
console.log(reg.test(str)) // true

特殊字符

[ ] 中括号:匹配其中的某一个字符

[abcde]  匹配abcde其中任意一个

[a-z]        匹配所有小写字母

[0-9]        匹配任意一个数字

( ) 小括号 分组:小括号里面的内容作为整体进行匹配

/(ab) | (cd)/   匹配 ‘ab‘ 或者 ‘cd‘

/(a|b)cd/          匹配 ‘acd‘ 或者 ‘bcd‘

注意:小括号、竖线不要放在 [ ] 内(无意义)

| : 或,跟js中的(||)一样

^:排除(除了) 类似js中的(!)

^ (不在中括号里)匹配字符串开头

$ 匹配结尾

/^ $/ 这样的正则代表完整匹配

转义字符:元字符

        所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。

元字符 含义 等价表达式
\d
数字[0-9]
\D非数字[^0-9] 
\w数字,字母,下划线[a-z0-9_A-Z]
\W非数字,字母,下划线[^a-z0-9_A-Z]
\s空白字符  
\S 非空白字符 
.全部字符  
\b 匹配单词边界  
\B匹配 非 单词边界  
\0(数字0)匹配 NUL 字符 
\n匹配 换行符  
\f 匹配 换页符 
\r 匹配 回车符 
\t 匹配 制表符  
\v匹配 垂直制表符 
\u4e00 - \u9fa5验证中文 
\u5343\u950b\u4e92\u8054 千锋互联  

量词

        正则表达式的一个符号块只能匹配文本中的一个符号,如果要多次匹配那么我们就需要量词

量词含义等价表达式
{n}匹配n次 
{n,m}最少n次,最多m次 
{n,}最少n次,最多不限 
+最少1次,最多不限{1,}
?可有可无,最多一个{0,1}
*可以有也可以没有,个数不限{0,}

修饰符

i   代表让正则不区分大小写

g  代表全局查找

代表多行查找(必须与g一起使用,并且,当使用^和$模式时才会起作用)

        如:

1 var re = new RegExp(‘a‘, ‘i‘)
2 var re= /a/i

        多个修饰符可以写在一起

1 var re = new RegExp(‘a‘, ‘ig‘)
2 var re= /a/ig

直接量字符

        正则中有一些字符本身是具有含义的,那么如果我们要匹配这个字符就需要用到 \ 转义

   
/ 匹配 /\\ 匹配 \\. 匹配 .
\* 匹配 *\+ 匹配 +? 匹配 ?
\匹配|\( 匹配 (
\[ 匹配 [\] 匹配 ]\{ 匹配 {
\} 匹配 }\’ 匹配 单引号\” 匹配 双引号
\xxx 查找以八进制数 xxx 规定的字符\xdd 查找以十六进制数 dd 规定的字符\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符

正则对象的API

方法(API)描述
test用来测试某个字符串是否与正则匹配,匹配就返回true,否则返回false
compile该方法的作用是能够对正则表达式进行编译,被编译过的正则在使用的时候效率会更高,适合于对一个正则多次调用的情况
exec返回的是一个数组,数组元素为匹配的子字符串

test方法

1 var reg = /a/
2 var str = ‘abcdefg‘;
3 console.log(reg.test(str));  // true

compile方法

var reg=/[abc]/gi
console.log(reg.test(‘a‘))

reg=/[cde]/gi
reg.compile(reg)
console.log(reg.test(‘a‘))
console.log(reg.test(‘a‘))

exec方法

var str = ‘dadf123dsafd33dfds;;;[]123dg;123‘
var reg = /\d+/
var arr = reg.exec(str)
console.log(arr) // [‘123‘] 

支持正则的字符串API

方法(API)描述
search查找第一次匹配的子字符串的位置  ,如果找到就返回一个number类型的index值,否则返回-1
replace
该方法用来将字符串中的某些子串替换为需要的内容,接受两个参数,第一个参数可以为正则或者子字符串,表示匹配需要被替换的内容,第二个参数为被替换的新的子字符串
split将一个字符串拆分成一个数组,它接受一个正则或者子字符(串)作为参数,返回一个数组
match接收一个正则作为参数,用来匹配一个字符串,返回一个数组

 

相关推荐