javascript基础创作日记 Day03
时间:2021年1月23日下午 多云
这个正则表达式之前记录过一篇,但是写的太烂了,自己也没搞懂,这次仔仔细细的研究了好久再重新写这一篇
目录
什么是正则表达式:
正则表达式用在RegExp 对象上,我们要先知道什么是RegExp 对象
RegExp 对象:
RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。
在我们想规定一个字符串的组成规则时就可用RegExp对象。
如:制定一个用户名的组成字符串只能用字母,数字,下划线,且不能用数字开头,且数量在8到16位,且结尾必须为字母
创建一个RegExp 对象
有两种方法:
var 变量=new RegExp("正则表达式","匹配模式");
var 变量=/正则表达式/匹配模式
我们一般用第二种,第一种一般不用
上面的参数1正则表达式指的就是:我们定义规则的方式,正则表达式中最重要的就是这一部分,参数2有三种可选:第一个即为忽略我们定义的规则中字母的大小写。第二个指把我们定义的规则,把字符串从头到尾全匹配一遍,因为一般正则表达式的执行只会匹配字符串中第一个符合条件的,后面的计算机就不会管了。第三个用不到,一般
正则表达式的规则
匹配字符串中是否含有我们指定的单个字符:
var 变量=/单个字符/匹配模式
如:RegExp对象的test方法可用来检测一个字符串是否符合我们定义的规则
test方法:RegExp对象.test(检测的字符串);
返回值为false或true
匹配字符串中是否含有我们指定的多个字符:
var 变量=/多个字符/匹配模式
直接写多个字符就行,后面的g为全局匹配,不过我们这里test方法也用不到全局匹配
特殊字符的查找需要输入特殊的字符
“.”这个字符比较特殊,表示任意字符,这个我们可以这么用:
当我们想匹配一个知前知后不知中的字符串的时候就可以用这个
还有一个比较重要:\w
作用:匹配字母数字或下划线:
exec方法:检索字符串中指定的值。返回找到的值,并确定其位置
匹配所有的字母,或任意给定的几个字符其中之一
匹配给定的几个字符其中之一
var 变量=/字符1|字符2/匹配模式
匹配字符串中含有"dg"或"Ad"
匹配任意的数字或字母
这个要用方括号,只要所匹配的字符串含有在方括号中的任意字符,即判断字符串符合规则,当然[^字符]
除外,如下:
如:
有一个[A-z]比较重要,表示所有的大小写字母,比较常用
匹配多个相同的字符
如下:
如:
这里面n{x,y}这个可用这样用[0-9]{x,y}来规定账号位数可以为x位到y位,还有两个比较重要^
和$
这两个可以规定账号开头必须是什么,或账号结尾必须是什么,比如:^1
表示开头必须是数字1,[A-z]$
表示结尾必须是字母
解决上面的问题+正则表达式规则的组合使用
如:完成我们上边的一个问题:
制定一个用户名的组成字符串只能用字母,数字,下划线,且不能用数字开头,且数量在8到16位,且结尾必须为字母
var account=/^([A-z]|_)\w{6,14}[A-z]$
RegExp对象的方法和属性
有如下三种方法,test是我们一直用的一个方法
RefExp对象的属性
和正则表达式相关的一些字符串操作方法
有这么几个
替换与正则表达式匹配的字符串之replace
语法:字符串.replace(正则表达式,参数);
这里只替换了第一个a,如果我们向全部替换就需要用到全局匹配即g
匹配模式之全局匹配g和忽略大小写的i
我们如果想让正则表达式对字符串中所有符合条件都进行匹配,则需要用到全局匹配g
如图:
如果要同时忽略大小写,则这样:
g和i的顺序没有要求
找到字符串中符合正则表达式的索引之search()
语法:字符串.search(正则表达式);
因为字符串在系统底层是用数组存储起来的,所以索引从0开始
这个只能找到第一个符合条件的字符串位置,就算加入全局匹配也是只能返回第一个符合的索引
把字符串分割为字符串数组之split()
语法:字符串.split(正则表达式);
可以看到确实把字符串从匹配的地方断开,同时删去匹配的字符,然后断开的部分分为数组的各项。
如图,因为最后一个a后面没有字符了,但是还是会把从这分一下,然后数组最后给添了一个空字符
无