正则表达式
每种数据都有自己的规则,正则表达式可以描述这个规则,也可以检测数据是否满足这个规则。所以正则表达式就是专门用来校验数据而产生的语法,有如下几个作用;
校验数据
提取数据
替换数据
创建正则表达式
JS中提供两种创建正则表达式的方法,字面量方式、构造函数方式
(1)字面量方式:
var reg=/\d/; //\d是正则表达式中的元字符 用来表示这是0-9之间的任何一个数字
(2)构造函数方式:
var reg = new RegExp("\\d{6}");
校验数据
正则表达式.test(字符串) //正则表达式提供的方法
var reg=/\d/;
var str='1';
var res= reg.test(str); //测试字符是否满足正则表达式规则,如果测试到有,返回true
字符串.search(正则表达式) //字符串提供的方法
var reg=/\d/
var str="asdadsa4dasd"
var res=str.search(reg)// 验证方法 找到返回下标 找不到返回-1
//在字符串中找满足正则表达式的那一部分
区别:
.test()方法是正则表达式提供的,.search()是字符串提供的,
.test()方法返回布尔值,search()返回下标
提取数据
正则表达式.exec(字符串)
var reg=/\d/
var str="asdadsa455dasd"
var res=reg.exec(str) //字符串中满足正则表达式的部分提取出来
//返回一个数组,内容是4
//遇到满足条件的就返回,所以只提取到4
字符串.match(正则表达式)
var reg=/\d/
var str="asd2adsa455dasd"
var res=str.match(reg)//字符串中满足正则表达式的部分提取出来
console.log(res[0])
区别:
正则表达式.exec(字符串),正则表达式提供的方法
字符串.match(正则表达式) 字符串的方法
相同:
都返回一个数组,只要匹配到符合规则的数据就返回
替换数据
字符串.replace(正则表达式,新的内容)
var reg=/\d/
var str="1还是一"
var ment="*"
var res=str.replace(reg,ment)
console.log(res)
//返回:*还是一
正则表达式中的特殊字符
元字符:用来代表数据中的规则;
这里列举一些常用的元字符;
\d 代表任意一个数字
\D 代表任意一个非数字
\w 代表任意一个数字、字母、下划线
\W 代表任意一个非数字 字母 下划线
. 代表任意一个字符 统配
\s 代表任意一个空格
\s 代表任意一个非空格
还可以使用一些别的字符,例如:
var reg=/bc/ //表示字符bc
var reg=/[1-9]/ //表示数字1-9
var reg=/[a-z]/ //表示字母a-z
当正则表达式是:var reg=/\d/
字符串是 var str="ab11a"
如果使用exec或match提取只可以提取到一个1,如何将两个1都提取出来呢?
这里需要给正则表达式添加修饰符。
var str="abd55sad448da";
//修饰符:{提取个数}
var reg=/\d{2}/ //表示提取两位的任意数字
var res=str.match(reg)
console.log(res)
//返回 55 可以一次提取两个数字。
reg=/\d{n}/ 代表规则为 n个任意字符
reg=/\d{n,m}/ 代表最少n个字符,最多m个字符
reg=/\d{n,}/ 代表最少n个,最多不限
reg=/\d+/ 代表至少一位 至多不限制
reg=/\d?/ 代表最多一位(0位可以匹配到),再多就匹配不到了
reg=/\d*/ 代表几位都可以。
万能匹配 .* 可以匹配到任意内容