1.创建表达式
1.使用字面量创建正则表达式
var reg=/abcdefg/;//正则表达式里面不需要加引号,不管是数字型还是字符串型, 控制台输出的是字体颜色为红色
2.使用RegExp构造函数创建正则表达式
- RegExp构造函数有两个参数:
- 第一个参数为字符串型,生成正则表达式时会去除引号自动加上 / /
- 第二个参数为修饰符,是一个可选项,一般为 g:全局匹配,i:不分大小写,传参时不分顺序,也可以同时传也可以单独传
var reg=new RegExp('^abcde$');
console.log(reg2); //输出的是/^abcde$/ 且为字体颜色为红色
3.也可以省略new关键字来创建
var reg=RegExp('^abcde$');
console.log(reg2); //输出的是/^abcde$/ 且为字体颜色为红色
2.正则标识符
-
i:表示忽略大小写
- i写在正则的最后面
- /1$/i
- 就是在匹配的时候部分大小写
-
g:表示全局匹配
- g写在正则的最后面
- /\w/g
- 就是全局匹配字母数字下划线
3.正则表达式字符
1.元字符:在正则表达式有特殊含义的字符
-
. : 匹配单个的任意字符
-
\w: 匹配单个的数字,字母,下划线
-
\W: 匹配单个非数字,字母,下划线
-
\d: 匹配单个数字
-
\D: 匹配单个非数字
-
\s: 匹配空白字符
-
\S: 匹配非空白字符
2.限定符:一般限定符配合元字符使用
- *:表示前一个内容(任意的单个字符)重复至少 0 次,也就是可以出现 0 ~ 正无穷 次
- +:前一个内容(任意的单个字符)重复至少 1 次,也就是可以出现 1 ~ 正无穷 次
- ?: 前一个内容(任意的单个字符)重复 0 或者 1 次,也就是可以出现 0 ~ 1 次
- {n} : 前一个内容(任意的单个字符)重复 n 次,也就是必须只能出现 n 次
- {n,}: 前一个内容(任意的单个字符)至少出现 n 次,也就是出现 n ~ 正无穷 次
- {n,m} :前一个内容(任意的单个字符)至少出现 n 次至多出现 m 次,也就是出现 n ~ m 次
注意:
**++:**单纯使用限定符配合元字符使用( /\d+/ )对于一些验证可能不太准确,可以使用类似(/1\d?1/)加以限定开始和结尾
例如:
var str = '11';
var str1 = '151';
var str2 = '1560051';
// 检测 ?
console.log('-------???--------');
var reg2 = /1\d?1/; //前一个内容重复 0 或者 1 次,也就是可以出现 0 ~ 1 次
console.log(reg2.test(str)); //true 出现0次
console.log(reg2.test(str1)); //true 出现1次
console.log(reg2.test(str2)); //false 出现5次
// 检测{n,m}
console.log('-----------{n,m} {n,m} {n,m} -----------');
var reg5 = /1\d{2,4}1/;
var nm = '1525561';
var nm1 = '156541';
var nm2 = '14861';
var nm3 = '1481';
var nm4 = '151';
console.log(reg5.test(nm));//false 出现了5次
console.log(reg5.test(nm1)); //true 出现了4次
console.log(reg5.test(nm2));//true 出现了3次
console.log(reg5.test(nm3)); //true 出现了2次
console.log(reg5.test(nm4)); //false 出现了1次
3.边界符:主要有两个 ^,$
-
^表示匹配行首的文本(以谁开始)
-
$表示匹配行首的文本(以谁结束)
-
如果^和$一起,表示以同一个开始同一个结尾-------> 必须精确匹配
var reg1=/^abc/;
// /^abc/ 以abc开头的返回true
console.log(reg1.test('abc')); //true
console.log(reg1.test('abcd')); //true
console.log(reg1.test('aabcd')); //false
console.log('======================');
var reg2=/^abc$/; //精确匹配 要求必须是abc字符串才符合
console.log(reg2.test('abc')); //true
console.log(reg2.test('abcd')); //false
console.log(reg2.test('aabcd')); //false
console.log(reg2.test('abcabc')); //false
4.字符类
1.[]:匹配单个范围内的字符
2.[-]:方括号内部范围符
3.[^]:如果中括号里面有 ^ 表示取反的意思,千万和我们边界 ^ 别混淆
5.括号总结
-
[] :中括号 — 字符集合,匹配括号中任意的字符
-
{}:大括号 —量词符,里面表示重复的次数
-
():小括号—表示优先级
//小括号 表示优先级 var reg2=/^(abc){3}$/; //它只是表示让abc重复三遍 console.log(reg2.test('abccc')); //false console.log(reg2.test('abcabcabc')); //true
4.正则表达式方法
1.正则表达式对象只有两个方法
1.test()
-
格式:正则.test(字符串)
-
功能:在字符串中匹配这个正则是否存在
-
返回值:如果匹配成功返回true,匹配失败则返回false
2.exec()
-
格式:正则.exec(字符串)
-
功能:在字符串中匹配这个正则是否存在
-
返回值: 匹配成功,返回一个装有字符串的数组,匹配失败返回null
2.字符串方法里的正则表达式(属于字符串方法)
1.match()
-
格式:字符串.match(正则)
-
功能:在字符串匹配是否符合正则表达式,
-
返回值:匹配成功,返回装有匹配的字符串的数组 匹配失败,返回null
2.replace()
-
格式:字符串.replace(oldStr/正则,newStr);
-
功能:用newStr将oldStr替换
-
返回值:替换成功的新字符串
3.split()
-
格式:字符串.split(分割符/正则);
-
功能:用分割符将原字符串进行分割
-
返回值:分割剩下的字符串数组
4.search()
-
格式:字符串.search(字符串/正则)
-
语法: 找到符号条件的字符串第一次出现的位置
-
返回值:有的话返回索引,没有返回-1,全局匹配标识符(g)此处没有作用
a-z ↩︎