正则方法
一、 exec
正则表达式的方法,使用正则对象调用
用于匹配字符串,只能匹配到第一个出现的字符串
var str = "sdfdsfadaffcvsadddsfkhk:hm;abcrr";
var reg = /abc/g;
var reg1 = new RegExp("abc","g");
console.log(reg.exec(str));
console.log(reg1.exec(str));
这个方法与字符串方法match相似,返回一个类数组,
查找匹配的子串在父串中的位置,不能全局查找
二、 test
正则对象的方法,必须使用正则对象调用
用于判断一个字符串是否符合规定的正则规则
符合规则返回true,不符合返回false
匹配手机号的正则
var reg = /^1[34578]{1}\d{9}$/;
^1:以一开头
[34578]{1}:说明在34578中任意一个
\d{9}$:以9位数字结束
var result = reg.test(str);
三、正则语法
1. 特殊字符和普通字符
正则表达式是由普通字符和特殊字符(元字符)组合而成的
普通字符:字母(a-z A-Z) 数字(0-9) _ 等
特殊字符(元字符):() {} [] ^ $ * ? \ | + . 等
普通字符可以直接使用,特殊字符在需要的情况下需要转义
转义字符:\
2. 系统预定义的特殊字符
\t /\t/ 制表符
\r /\r/ 换行符
\n /\n/ 回车
\f /\f/ 换页、
\b /\b/ 回退符
3. 字符集 []
4种字符集
1) 简单集合
[]:包含几个字符,表示这几个字符的一个集合
[as12]:表示由a,s,1,2组成的一个集合
2) 范围集合
[]:包裹的一个范围:0-9 a-f A-S
eg:[0-5] 表示0-5之间的数字组成的集合
3) 负向集合
在集合内部使用^表示非
eg:[^as12] 表示除了as12的所有字符串
如果是as12返回false 只要不是as12就返回true
4) 组合集合
几个集合组合在一起
eg:[0-9] [a-z] [A-Z] [_] ====> [0-9a-zA-Z_]
正则表达式
1. 正则的含义:用于匹配字符串的一种形式
正则表达式是一种对象(数据类型)
2. 复习字符串
转换:toString String +""
拼接:concat +
获取子串位置:indexOf lastIndexOf
长度:length
字符串某一个位置上得字符:charAt charCodeAt
截取子串:substring substr slice
替换:replace
查找:search
字符串转数组:split
保留小数:toFoxed(2)
编码:encodeURIComponent
解码:decodeURIComponent
3. 要学习的方法
4个字符串方法:
search match split replace
search:检索与正则表达式相匹配的值(没有返回-1)
用法:str.search(reg);
match:返回所有正则表达式的匹配(数组)
用法:str.match(reg);
replace:替换与正则表达式匹配的子串
用法:str.replace(reg,"");
2个正则方法:
exec test
test:检索字符串中指定的值 返回 true 或 false
用法:reg.test(str);
exec:检索字符串中指定的值 返回检索的值
用法: reg.exec(str)
4. 创建正则表达式
eg:数组创建
var arr = [1,2,3];
var arr = new Array();
正则表达式也有两种创建方式;
1) 字面量
var reg = /\s+/;
2) 使用构造函数new一个
var reg = new RegExp();
5. split 分割字符串
将字符串转为数组,通过特殊字符将字符串切开
如果使用正则切开字符串,则传递的参数是一个正则对象
var a = "a b c d";
传统方法:a.split(""); 详见案例
正则方法:a.split("/\s+/");
6. search 查找
在父串中查找字符串或者字符的位置,
传统方法传入一个子串,正则方法传入一个正则表达式
var str = "abcdefqwerqwerrre.rrwqqwrr";
传统查找 er
console.log(str.search("er"));
传统查找 .
console.log(str.search("\\."));
正则查找 er 和 .
console.log(str.search(/er/));
console.log(str.search(/\.+/));
注意:search不能全局查找
7. match 返回所有正则表达式的匹配(数组)
在父串中匹配子串,参数是字符串货正则
var str = "adDdvcdfwedDDfafsdfddddDfsafd";
传统查找
console.log(str.match("ddd"));
正则查找
console.log(str.match(/d+/gi)); /d+/g 不区分 "d" 的大小写
注意:match返回的是一个类数组
类数组:数组和对象的结合体同时拥有数组及对象的方法和属性
注意:在正则表达式中千万不能乱加特殊字符 比如 空格等,这是一种规则
8. replace
替换父串中被匹配到的子串
两个参数:
参数1:oldStr 将要被换掉的子串,也可以是正则
参数2:newStr 替换字符串,可以是字符串也可以是函数,
如果是函数就必须有返回值,返回值必须是字符串
var str = "你是傻子,他也是傻子";
g:全局查找
var str = "你是傻子,他也是傻子";
传统替换
console.log(str.replace("傻子","*"));
正则替换
console.log(str.replace(/傻子/g,"*"));
传统替换只能替换找到的第一个
正则则可以全局替换
9. 字符串方法总结:
返回数字的方法:search indexOf lastIndexOf length charCodeAt
返回数组的方法:split match
返回字符串:replace charAt concat substr substring slice