JavaScript——正则表达式

概念

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

语法规则

正则表达式的创建方法有两种:

        1、直接量        其本身是一个对象,表达的意义是一种规则。

            var reg = /ab/
			var str = "abcdef"
			console.log(reg.test(str))

        2、构造方法RegExp()

            var reg = new RegExp("ab")
			var str = "abcdef"
			console.log(reg.test(str))

 

正则表达式的对象方法

        1、test   ----   检测字符串中是否含有检测的字符。返回:boolean。

            var reg = /ab/
			var str = "ABabcdeab"
			console.log(reg.test(str))

        2、exec  ----    寻找字符串中是否含有检测的字符。返回:将找到的字符按数组返回。

            var reg = /ab/
			var str = "ABabcdeb"
			console.log(reg.exec(str))

 

正则表达式的三个属性 

        1、 i    ----    执行对大小写不敏感的匹配,即忽略大小写

            var reg = /ab/i
			var str = "ABcde"
			console.log(reg.test(str))

        2、 g  ----  执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)

            var reg = /ab/g
			var str = "ABabcdeab"
			console.log(str.match(reg))

 

         3、 m  ----  执行多行匹配

            var reg = /^a/gm  //^a表示以a开头
			var str = "aBabcd\nabeba"  //\n是换行符
			console.log(str.match(reg))

 

正则表达式中的方括号[ ]

        方括号用于查找某个范围内的字符:一个中括号代表一位,中括号里边的内容代表的是这一位可以取值的范围 ,如  [a-z]  ---  表示a-z之间的任意字符。   [0-9]  ---表示0-9之间的任意数字。

            var reg = /[a-z][0-9]/g  
			//表示前一位为字母,紧挨着的后一位为数字
			var str = "b2deb3fz213"
			console.log(str.match(reg))

注意:1、插入符^放到方括号 [ ] 里边表示"非"的意思        

2、在括号 ()里可以加入"|"表示"或"的意思,"|"操作符两边放匹配规则

            var reg = /[^a]/g
			var str = "abc"
			console.log(str.match(reg))
			

			var reg2 = /(ab|ef)/g
			var str2 = "abcdefgh"
			console.log(str2.match(reg2))

 

元字符

元字符描述
\w --word查找单词字符(字母+数字+下划线)
\W查找非单词字符==[^\w]
\d --data查找数字
\D查找非数字字符
\s --space查找空白字符
\S查找非空白字符
\b --border匹配单词边界 "today is friday"
\B匹配非单词边界
\t查找制表符
\n查找换行符
\f查找换页符
\v查找垂直制表符
\uXXXX查找以十六进制规定的Unicode字符
. --必记(点号)查找单个字符,除了换行和行结束符

其中需要重点记住以下几个: \w        \W        \d        \D        \s        \S        

                    var str = "djfh a!$#~89。6\n"
			
			        var reg1 = /\d/g
			        console.log(str.match(reg1));
			
			        var reg2 = /\D/g
			        console.log(str.match(reg2));
			
			        var reg3 = /[\d\D]/g   //  任意字符
			        console.log(str.match(reg3));
			
			        var reg4 = /\w/g
			        console.log(str.match(reg4));

			        var reg5 = /\W/g
			        console.log(str.match(reg5));
			
			        var reg6 = /\s/g
			        console.log(str.match(reg6));

			        var reg7 = /\S/g
			        console.log(str.match(reg7));

 

量词

量词描述
n+匹配任何包含至少一个n的字符串 {1,}
n*匹配任何包含零个或多个n的字符串 {0,}
n?匹配任何包含零个或一个n的字符串
n{X}匹配包含X 个n 的序列的字符串/\w{10}/ /\d{11}/
n{X,Y}匹配任何包含X 个至Y 个n 的序列的字符串/\w{6,16}/
n{X,}匹配包含至少X 个n 的序列的字符串
n$匹配任何结尾为n 的字符串
^n匹配任何开头为n 的字符串
S(?=n)匹配任何其后紧接指定字符串n 的字符串S abc(?=d)
S(?!=n)匹配任何其后没有紧接指定字符串n 的字符串S
            var reg = /[a-c]+/g
			var str = "defgh"
			console.log(reg.test(str))
			
			var reg2 = /[a-c]*/g
			console.log(reg2.test(str))
			
			var reg3 = /\d?/g
			var str2 = "abc321d"
			console.log(reg3.test(str2))

 

        ?=n ----->n只参与条件限定,限定其后紧接指定字符串n 的字符串,但并不参与选择

        ?!n ----->n只参与条件限定,限定其后没有紧接指定字符串n 的字符串,但并不参与选择

            var str = "aabaaaa";
			var reg = /aa(?=b)/g; //b只参与条件限定,并不参与选择
			console.log(str.match(reg)); //此时只有一个a 它的后面有紧跟字符b

			var reg = /aa(?!b)/g;
			console.log(str.match(reg)); //此时有4个a 它的后面没有紧跟字符b

补充:1、"\num" 反向引用,指的是要引用的第num个括号里的表达式值

            var str = "aaaabbbb";
			var reg = /(\w)\1/g; //括号"()"后边的"\1"为反向引用第一个括号的值
			var reg2 = /(\w)\1\1\1/g; //3个"\1"代表后边还要引用第一个括号里的值3次
			console.log(str.match(reg))
			console.log(str.match(reg2))

         2、验证特殊字符时,需要加反斜杠。在正则表达式中将其转义为普通字符

            var str = "ad754fg\7d5ha8*5u#$^$#"
			var reg6 = /\d\*/ //查询字符串中是否含有特殊字符 "*"
			console.log(reg6.test(str));

 

支持正则表达式的String对象的方法

方法描述
search检索与正则表达式相匹配的值,返回匹配字符串的位置
match找到一个或多个正则表达式的匹配
replace替换与正则表达式匹配的字串
split把字符串分割为字符串数组
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

z_小张同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值