正则表达式
2.创建正则表达式:
-
var reg = /规则/;//字面量形式创建.(推荐使用)
-
var reg = new RegExp();//构造函数形式创建.
-
var reg = RegExp()
js提供了一些使用正则表达式的方法:
验证方法:
test 语法: 正则表达式.test(被验证的数据);
var reg = / \d /;//元字符,代表任意一个字符.
var str = ‘5’;
var res = reg.test(str); //验证这个字符串是否满足数字规则
console.log(res);//打印结果 trus
search 语法 字符串.search(正则表达式);
```js
var reg = / \d /;
var str = 'abcd5efg';
var res = str.search(reg);
//search 方法就是在字符串中查找满足正则表达式的部分;
//search 也可以作为验证的方法, 如果找到符合规则的数据,就返回下标,如未找到则返回 -1 ;
console.log(rse)//答应结果为 [4],此为下标
提取方法:
exec ; 语法: 正则表达式.test(被验证的数据);
var reg = /\d/;
var str = 'abcd2efg';
var res = reg.exec(str);//正则.exec(字符串) - 从字符中提取满足规则的数据
console.log(res);//打印结果为 Array(1)
//exec方法返回的是一个数组,通常匹配到的内容,就是数组中的第一个元素;
console.log(res[0]);//打印结果为 2
match ; 语法: 字符串.match(正则表达式);
var reg = /\d/;
var str = 'abc2defg;
varres = str.match(reg);//正则.match(字符串) - 从字符中提取满足规则的数据
console.log(res);//打印结果为 Array(1)
//match方法返回的是一个数组,通常匹配到的内容,就是数组中的第一个元素;
console.log(res[0]);//打印结果为 2
字符串的替换方法:
replace ; 语法: 字符串.replace(正则表达式,新内容)
var reg = /\d/;
var str = '1是一';
var ment = '*'; //定义一个新的变量可以用于替换
var reg = str.repl(reg,ment)//替换 字符串.replace(正则表达式,新内容)
console.log(res); //打印结果为 *是一
3.元字符
元字符的作用是用来代表数据中的规则
\d 代表任意一个数字
\D 代表任意一个非数字
\w 代表任意一个数字,字母,下划线
\W 代表任意一个非数字,字母,下划线
. 代表任意一个字符
\s 代表任意一个空格
\S 代表任意一个非空格
^ 表示匹配行首的文本(以谁开始)
$ 表示匹配行尾的文本(以谁结束)
还可以使用一些别的字符,如:abcd只替换其中的bc
var reg = /bc/;
var str = 'abcd';
var res = str.replace(reg,"*");
console.log(res);//打印结果为 a*c
4.量词:
{n} 表示字符要有n个
{n,} 表示字符最少n位
{n,m} 表示最少n位,最多m位
*表示可以有任意位
+表示最少一位
?表示最多一位
5.特殊符号
[] 字符串用中括号括起来,表示匹配其中的任一字符,相当于或的意思
[^] 匹配除中括号以内的内容
\ 转义符
| 或者,选择两者中的一个。注意|将左右两边分为两部分,而不管左右两边有多长多乱
() 从两个直接量中选择一个,分组
eg:gr(a|e)y匹配gray和grey
[\u4e00-\u9fa5] 匹配汉字
6.案例
1.写一个qq的表达式
分析规则:最少5位,最多12位.不能用0开头.
var reg = /^[1-9]\d{4,11}$/; // 1-9之间的数字.4-11位的任意数字
var str = '12345678910'//qq号
var res = reg.test(str);//是否满足规则
censole.log(res);//true
2.网易邮箱
分析规则,6-18位,由字母,数字,下划线.由字母开头.
var reg = /^[a-zA-Z]\w{5-17}@(163|126)\.com$/
var email = 'leifeng@163'.com;
var email = '1leifeng@163'.com;
var email = 'leifeng@163'.cn;
var res = reg.test(email);
console.log(res);//true //false //false