描述字符串的“构成模式"
用于检查字符串是否符合预定的格式要求
typeof正则表达式结果是object
“按位”描述规则
指一位一位的描述字符串的构成形式
问题:检查是否满足以字母m开头,然后是3个数字,最后以字母n结尾
/^m\d\d\dn$/
^表示开头
$表示结尾
\d表示数字
\d\d\d也可以写作\d{3}
创建正则表达式
俩种语法:
1)/内容/的语法形式
2)new RegExp(内容)
元字符
指一位指定类型的字符
元子符 | 功能 | 等价的方括号表示法 |
---|---|---|
\d | 匹配一个数字 | [0-9] |
\D | 匹配一个非数字字符 | [^0-9] |
\w | 匹配一个单字字符(字母、数字或者下划线) | [A-Za-z0-9] |
\W | 匹配一个非单字字符 | [^A-Za-z0-9] |
\s | 匹配一个空白字符,包括空格、制表符和换行符 | |
. | 任意字符 | |
^ | 匹配开头 | |
$ | 匹配结尾 |
注意:
-指字符范围
^表否定
若使用new RegExp()写法,反斜杠需多写一个
/^\d$/
new RegExp(^\\d$)
特别地,
转义-特殊字符之前的反斜杠\表示下一个字符不是特殊字符
/^.$/
→检查字符串是不是任意字符
/^\.$/
→检查字符串是不是一个点
/^\\$/
→检查字符串是不是一个反斜杠
若不确定符号有无特殊意义,可加上转义字符\以确保它表达的是这个符号本身
方括号表示法
[xyz]创建一个字符集合,表示匹配方括号中的任意字符
问题:第1位是一个字母,b表示本科生,y表示研究生,后面是7位数字,用正则表示为:
/^[by]\d{7}$/
// 获取有data-t属性的menu;方括号-匹配属性
var themenu = document.querySelector(".menu-box .menu[data-t=" + t + "");
量词
量词 | 意义 |
---|---|
* | 匹配前一个表达式0次或多次。等价于{0,} |
+ | 匹配前面一个表达式1次或者多次。等价于{1,} |
? | 匹配前面一个表达式0次或者1次。等价于{0,1} |
{n} | n是一个正整数,匹配了前面一个字符刚好出现了n次 |
{n,} | n是一个正整数,匹配前一个字符至少出现了n次 |
{n,m} | n和m都是整数。匹配前面的字符至少n次,最多m次 |
修饰符
也叫标志flags
实现高级搜索
修饰符 | 意义 |
---|---|
i | 不区分大小写搜索 |
g | 全局搜索 |
例:
var re = /m/gi;
var re = new RegExp('m', 'gi');
test()
测试某字符串是否匹配此正则表达式
返回值:true或false
[a-z]{3}[a-1n-z]$/.test('abcd')
exec()
查找
返回值:结果数组或null
var str = 'abc123def456ghi789';
var regexp = /\d+/;
var result1 = regexp.exec(str);
2)会逐条遍历
若有“g”修饰符将自动成为“有状态”的
意味着可以对单个字符串中的多次匹配结果进行逐条的遍历