目录
1.新建
(1)RegExp构造函数:var re=new RegExp("a")
(2)使用字面量(常用):var re=/a
2.方法
(1)test():返回一个布尔值,方法用于匹配字符串,匹配成功返回true,失败返回false
(2)exec():
<1>exec():返回匹配结果,发现匹配,就返回一个以每个匹配成功的字符串组成的类数组集合。否则返回null
<2>方法属性:
1)index 表示匹配项在字符串中的位置
2)input 表示原字符串
(3)正则.方法(字符串)
3.匹配规则
(1)字面量字符
<1>在正则表达式中,某个字符只表示它字面的含义,比如/a/匹配a
<2>数字、大小写、符号
(2)元字符
<1>正则中需要用斜杠转义的字符:^、.、[、]、$、(、)、|、*、+、?、{、}、\\
1)点字符:.(匹配除回车\r、换行\n、行分隔符\u2028、段分隔符\u2029以外的所有字符)
2)位置字符:
1>^ 表示字符串的开始位置
2>$ 表示字符串的结束位置
3)竖线符号:|(在正则中表示“或关系”即 a | b 表示匹配 a 或 b)
<2>如果使用RegExp方法生成正则对象,转义需要使用两个斜杠,因为字符串内部会先转义一次
(3)重复类:模式的精确匹配次数,用大括号{}表示,{n}表示恰好重复n次,
{n,}表示至少重复n次,{n,m}表示重复不少于n次,不多于m次
(4)量词符
<1>? 问好表示某个模式出现0次或1次,等同于{0,1} 最多1次
<2>* 星号表示某个模式出现0次或多次,等同于{0,} 无影响
<3>+ 加号表示某个模式出现1次或多次,等同于{1,} 至少1次
(5)字符类:表示有一系列字符可供选择,只要匹配其中一个就可以,所有可供选择的字符都放在 方括号内,如:[abc]表示a、b、c之中任选一个匹配
<1>脱字符 ^:如果方括号内第一个字符是[^],则表示除了字符类中的字符,其它字符都可以匹 配,如[^abc]表示除了a、b、c之外都可以匹配
<2>连字符 -
1)对于连续序列的字符,连字符用来提供简写形式,表示字符的连续范围,如:[abc]可写成 [a- c]、[0123456789]可写成[0-9]、[A-Z]表示26个大写字母
2)中文[\u4e00-\u9fa5]
(6)修饰符(模式修正符):修饰符表示模式的附加规则,放在正则模式的最尾部,修饰符可以单 个使用,也可以多个一起使用
<1>g 默认情况下,第一次匹配成功后,正则对象就停止向下匹配,g修饰符表示全局匹配
<2>i 默认情况下,正则对象区分字母的大小写,加上i修饰符以后表示忽略大小写
<3>m 表示多行模式,会修改^和$的行为,默认情况下^和$匹配字符串的开始处和结尾处,加 上m修饰符后,^和$会识别换行符\n
(7)预定义模式:指某些常见模式的简写方式
<1>\d 匹配0-9之间的任一数字,相当于[0-9]
<2>\D 匹配所有0-9以外的字符,相当于[^0-9]
<3>\w 匹配任意的字母、数字和下划线,相当于[A-Za-z0-9]
<4>\W 除所有字母,数字和下划线以外的字符,相当于[^A-Za-z0-9]
<5>\s 匹配空格,包括制表符、空格符、断行符等
<6>\S 匹配非空格的字符
<7>\b 匹配单词的后边界
<8>\B 匹配非单词边界
(8)特殊字符
<1>[\b] 匹配退格键
<2>\n 匹配换行键
<3>\r 匹配回车键
<4>\f 匹配换页符
<5>\t 查找制表符tab
(9)组匹配
<1>正则表达式的括号表示分组匹配,括号中的模式可以用来匹配分组的内容
<2>例:var str='abcde'
var reg=[(abc)(def)]
str.match(reg); ['a','b','c']
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>RegExp正则表达式</title>
</head>
<body>
</body>
<script>
// 创建正则表达式
// 1. 字面量字符
// 第一种方法
// var reg = new RegExp("a");
// console.log(reg.test("a"));
// 第二种方法
// var reg = /a/;
// console.log(reg.test("aaa"));
// 2. .字符 代表除了某些特殊符号的任意字符 例如:var reg = /a.c/;
// .字符 如果表示自己的话.前面要加反斜杠/ 例如:var reg = /a\.c/;
// var reg = /a.c/;
// console.log(reg.test("a.c"));
// 3. ^ & |
// 以A开头或以a结尾都为true,否则为false
// var reg = /^A|a$/;
// console.log(reg.test("Abc"));
// 4. {}区间范围
// /abc{2}/表示只要c出现两次就为true /abc{3,5}/表示c的次数在此区间内都为true
// var reg = /abc{3,5}$/;
// console.log(reg.test("abcccccc"));
// 5. 量词符 * + ?
// var reg = /ba?$/;
// console.log(reg.test("bbaab"));
// 6. 字符类 []
// 只要其中有一个就为true,否则为false 例如: var reg = /[abcdefg]/;
// 除了abcdefg为false,其它都为true 例如: var reg = /[^abcdefg]/;
// 连字符-,在此区间内都为true 例如: var reg = /[^a-g]/;
// var reg = /[^A-Z]/;
// console.log(reg.test("uuu"));
// 7. 修饰符
// g为global(所以满足需求的选项) i为忽略大小写
var reg = /[a-z]/gi;
// 如果符合/[a-z]/g,那就把所以满足需求的选项去掉
var str = "abcdeZZZ123123".replace(reg,"");
console.log(str);
</script>
</html>
运行结果:
4.匹配方法
(1)match():接受一个参数,正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,如果匹 配不成功,就返回null
(2)search():参数与match相同,返回字符串中第一个匹配项的索引,没有匹配项返回-1
(3)replace():用于替换,接受两个参数,第一个是匹配项,第二个可以是字符串或是一个函数
(4)字符串.方法(正则)
具体案例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>正则的使用</title>
</head>
<body>
</body>
<script>
// 1. 手机号
var reg1 = /^1[^0124]\d{9}$/;
// 2. qq号
var reg2 = /^d{6,10}$/;
// 3. 邮箱
// xxxxx@xxxx.net
var reg3 = /\w+\@\w+\.[(com)(cn)(net)$]/;
</script>
</html>