1.创建正则:
1.字面量形式
let reg = /^[a-z]{3}$/;
2.构造函数形式
let length = 3;
let reg = new RegExp('^[a-z]{' + length + '}$');
区别:我暂时仅发现,字面量形式不支持插值,而构造函数支持
2.正则表达式的使用
1.RegExp方法
exec:返回一个数组(未匹配到则返回 null)
index:表示匹配结果在原始字符串中的起始位置、
input:表示被匹配的原始字符串
groups:如果正则表达式中使用了捕获组,匹配的结果字符串表示捕获组,由于我没使用所以为undefined。
let str = "SSFDS"
let length = str.length;
let reg = new RegExp('^[A-Z]{' + length + '}$');
console.log(reg.exec(str)); //[ 'SSFDS', index: 0, input: 'SSFDS', groups: undefined ]
test:返回 true 或 false
let str = "SSFDS"
let length = str.length;
let reg = new RegExp('^[A-Z]{' + length + '}$');
console.log(reg.test(str));//true
2.String方法
match:返回一个数组(未匹配到则返回 null),各数据与exec类似
let str = "SSFDS"
let length = str.length;
let reg = new RegExp('^[A-Z]{' + length + '}$');
console.log(str.match(reg));//[ 'SSFDS', index: 0, input: 'SSFDS', groups: undefined ]
search:返回匹配到的位置索引,在失败时返回 -1。
let str = "SSFDS";
let matches = str.search(/F/g);
console.log(matches); //2
replace:使用替换后的字符串
let str = "SSFDS";
let matches = str.replace(/F/,"无");
console.log(matches);//SS无DS
3.标记
g:全局搜索。
i:不区分大小写搜索。
m:多行搜索.
s:允许 .
匹配换行符
u:使用 unicode 码的模式进行匹配
y:执行“粘性 (sticky
)”搜索,匹配从目标字符串的当前位置开始。
4.限定符
a* : a出现0次或多次
a+ : a出现1次或多次
a? : a出现0次或1次
5.元字符
\d : 匹配数字字符
\D : 匹配非数字字符
\w : 匹配单词字符(字母,数字,下划线)
\W : 匹配非单词字符
\s : 匹配空白字符(换行符,空格符,\n,\r)
\S : 匹配费空白字符
. : 匹配任意字符(出换行符)
\b : 标注字符的边界
^ : 匹配行首
$ : 匹配行尾