(一)基本使用
创建方法一:(构造函数)
var 变量 = new RegExp("正则表达式","匹配模式");
创建方法二:(字面量)
var 变量 = /正则表达式/;
var reg = new RegExp("a","i"); //构造函数
var reg = /a/ //字面量
//用test检验字符串是否符合正则表达式的规则
//写法一
console.log(reg.test("ashsdan");
/*写法二
var str = "abc";
var result = reg.test(str);
console.log(result); */
注:匹配模式:i 忽略大小写
g 全局匹配模式
(二)语法
- 或 [ ab ] == a | b
- [A-z]所有字母
- [0-9]所有数字
- 除了 [^ ab]
- 量词(只对前面的一个内容起作用)
- {n} 正好n次
- {m,n} m-n次
- {m,} m次以上
- + 至少一个,相当于{1, }
- * 0个以上,{0,}
- ? 0或1,{0,1}
- 开头结尾
- 开头^
- 结尾$
- 如果^ $同时使用要求字符串完全符合正则表达式
- 元字符
- . 表示检查任意字符
- 正则表达式中使用 \ 作为转义字符
- \ . 表示 . , \\ 表示 \
- 使用构造函数时,由于它的参数时一个字符串,而 \ 是字符串中转义字符,要使用 \ 则需要使用 \\ 来代替
//字面量 var reg = /\./; reg = /\\/; //构造函数 reg = new RegExp("\\."); reg = new RegExp("\\\\");
- \w 任意字母、数字、_ \W(相反)
- \d 数字 \D 非数字
- \s 空白字符 \S 非空白字符
//去掉字符串前后的空格 var str = " he llo "; //去掉所有空格 str = str.replace(/\s/g,""); //去掉开头和结尾的空格 str = str.replace(/\s*g|\s*$/g,""); //注意全局匹配
- \b 单词边界 \B 非单词边界
-
//创建一个正则表达式,检查一个字符串是否含有单词child reg = /child/; console.log(reg.test("children"));//ture reg = /\bchild\b/; console.log(reg.test("children"));//true
-
- \0 找查NUL字符
- \n 换行符 \f 换页符 \r 回车符 \t 制表符 \v 垂直制表符
(三)与方法结合使用
1.split()拆分字符串
var str = "1a2b3c";
var result = str.split(/[A-z]/);
console.log(result);
//输出1,2,3
2.search()搜索字符串内指定内容
搜索到会返回第一次出现的索引,没有则返回-1
3.match()将字符串中符合条件的内容提取出来,封装到一个数组中返回
默认只会找到第一个符合的内容,所以可以设置全局匹配模式
var str = "1a2b3c";
var result = str.match(/[a-z]/ig);
console.log(result);
//a,b,c
console.log(Array.isArray(result));
//ture
console.log(result[0]);
//a 返回数组中的元素
4.replace("被替换的内容","新的内容")替换字符串的内容
默认只替换第一个
var str = "1a2b3c";
//后面的字符串为空,则为删除替换的内容
var result = str.replace(/[a-z]/gi,"");
console.log(result);
//123
(四)实例
1.判断电话号码
// 136/158/138/155开头
var reg = /^1(36|58|38|55)/d{8}$/;
2.判断邮箱
//123_.23q_we@abc.com.cn
//任意字母数字下划线+(.任意字母数字下划线)+@+任意字母数字+.任意字母+.任意字母
var reg = /^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/;
var email = "12345678911@qq.com";
console.log(reg.test(email));