正则表达式
初识正则表达式:
创建一个正则表达式
- 正则表达式字面量
var reg = /abc/;
- new RegExp();
var reg = new RegExp('abd') //括号里面写的是规则
.给正则表达式添加属性:
i(ignoreCase) : 忽视大小写
g(global) : 执行全局匹配
m : 执行多行匹配
RegExp对象的方法
compile() : 编译正则表达式
exec() : 检索字符串中指定的值,返回找到的值,并确定其位置
test() : 检索字符串中指定的值,返回true 或false
reg.exec() 是一个匹配的方法 (重要)
String 对象的方法
search() :检索与正则表达式相匹配的值fio
match() :找到一个人或多个匹配 (常用)
replace() :替换与正则表达式匹配的子串 (常用)
split() : 把字符串分割为字符串数组 (常用)
表达式
[]方括号:代表一位数,里面放的值表示一个区间
^ 在表达式里面表示 "非" 的意思
^ 不在表达式括号里面表示必须是后面这位数 /^1/:开头必须是1
$ 不在在表达式中括号中表示的意思是最后一位数必须是以什么结尾的 /ed$/,以ed匹配以ed结尾的字符串
元字符
\w :代表一位,查找单词字符, \w==== [0-9A-z]
\W ==== [^\W]
\d :====[0-9] 查找数字
\D ====[^\d]
\s === [查找空白字符,即\t\n\r\v\f] 最常用的是空格和换行
\S ===[^\s] 非空白字符
\b === 匹配单词边界
\D === 匹配非单词边界
单词边界在字符串里面可以看成是(空格)
. :查找单个字符,除了换行和行结束符
量词(表示匹配数量的词)
n+ 匹配任何包含至少一个n的字符串,这个变量可以出现1到无数次
var str = 'abc' ;
console.log(str.match(reg))
n* 匹配任何0个到多个n的字符串,这个变量可以出现0到无数次 最后会返回一个空串
var reg =/\w*?/g;
var str = 'aaaaaaaa';
console.log(str.match(reg));
n? 匹配任何包含零个或一个n的字符串,这个变量0个或1个匹配 ,最后会匹配一个空字符串
var reg = /\w?/g;
var str = 'aaaaaaaaaa';
console.log(str.match(reg));
n{X} 匹配包含 x个n 的序列的字符串 (无贪婪匹配的选择)
var reg = /\w{3}/g;
var str = 'aaaaabbbbb';
console.log(str.match(reg));
n{X,Y} 匹配包含X至Y个n的序列的字符串 (适用贪婪匹配规则)
var reg = /\w{2,4}?/g;
var str = 'asf23rfdsvwe'
console.log(str.match(reg));
n{X,} 匹配包含至少X个序列的字符串 (适用贪婪匹配规则)
var reg = /\w{3,}?/g;
var str = '32rewvdfvdw2'
console.log(str.match(reg));
// n{1,}===n+ , n{0,} ===n*
ns 匹配任何结尾为n的字符串 (无贪婪匹配的选择)
var reg =/\w53/g;
var str = '1236532453'
console.log(str.match(reg));
不加量词时的匹配就是按照单个匹配来的
var reg =/\w/g;
var str = '231cdsf';
console.log(str.match(reg));
9.正向预查/ 正向断言
?=n 匹配任何其后紧接指定字符串n的字符串 ?=n nb不会被匹配,只作为辅助判断
var str = 'aaaabbbb';
var reg = /a(?=b)/g;
console.log(str.match(reg))
;
?!n 匹配任何其后没有紧接指定字符串n的字符串,后面不跟着n
var str = 'abaaaaaa';
var reg = /a(?!b)/g;
// console.log(str.match(reg));
console.log(reg.exec(str));
console.log(reg.exec(str));
10. 贪婪匹配,编程非贪婪匹配(能少就不多),在量词后面加个?,可以打破规则
var str = 'aaaaaa1'
var reg = /\w??/g;
// console.log(reg.exec(str));
console.log(str.match(reg));