正则表达式
正则表达式用于定义一些字符串的规则,计算机可以根据正则表达式来检查一个字符串是否符合规则,或者将字符串中符合规则的内容提取出来。
一、创建正则表达式对象
语法一:var 变量 = new RegExp(“正则表达式”,“匹配模式”);
语法二:var 变量 = /正则表达式/匹配模式;
-
匹配模式:
i --> 忽略大小写
g -->全局匹配模式
- 使用test()方法检查字符串是否符合规则
var reg2 = /a/; //匹配字符串中有没有a
document.write(reg2.test("a")); //true
二、正则表达式的语法
| 表示或,[]中的内容也表示或
a或b或c: a | b | c ,[abc]
任意小写字母:[ a-z ]
任意字母:[ A-z ]
任意数字:[0-9]
abc或adc或aec:a[ bde ]c
[^ ]表示除了
除了数字:[^0-9]
量词,只对前面的一个内容起作用
{}
a连续出现n次:a{n}
a出现m-n次:a{m,n}
a出现m次以上:a{m}
+ 至少出现一次 == {1,}
a出现至少一次:a+
* 0次或多次 == {0,}
? 0次或一次 == {0,1}
a出现0次或一次:a?
^ 表示开头
以a开头:/^a/
$ 表示结尾
以a结尾:/a$/
. 表示任意字符
\w 表示任意字母、数字、_
\W 除了字母、数字、_
\d 表示任意数字
\D 表示除了任意数字
\s 表示空格
\S 表示除了空格
\b 单词边界,标识独立的单词
查找有没有单词child: / \bchild\b /
\B 除了单词边界
正则语法:https://www.runoob.com/jsref/jsref-obj-regexp.html
三、支持正则表达式的String方法
split()
可以向split()方法传递一个正则表达式作为参数,split()方法会根据正则表达式的规则去拆分字符串,并放在数组中返回。
var str = "1a2b3c4d5F6E7O8";
document.write(str+"<br>"); //1a2b3c4d5F6E7O8
str = str.split(/[A-z]/);
document.write(str); //1,2,3,4,5,6,7,8
search()
可以向search()方法传递一个正则表达式作为参数,search()会在字符串中寻找符合规则的内容,并返回其第一次出现的位置索引
search()只能查找第一个符合规则的内容,设置g也没用
var str = "hello hello world";
//在字符串str中寻找e
document.write(str.search(/e/g)); //1
match()
可以向match()方法传递一个正则表达式作为参数,match()方法会在字符串中寻找一个或多个符合规则的内容,并将这些内容放在数组中返回。
默认情况下,match()方法找到第一个符合规则的内容后就不再检索,如果想要返回所有符合规则的内容,就将匹配模式改为g(全局检索模式)。
var str = "hello hello world";
//寻找字符串str中属于a-l的内容
document.write(str.match(/[a-l]/g));//h,e,l,l,h,e,l,l,l,d
replace()
replace()方法可以替换指定内容,默认替换第一个符合规则的内容
参数一:要替换的内容,可以是一个字符串,也可以是一个正则表达式
参数二:新内容
var str = "hello hello world";
//寻找l,替换为¥
document.write(str.replace(/l/g,"¥")); //he¥¥o he¥¥o wor¥d
练习
1.去除字符串中的空格
var str2 = " he ll o ";
console.log(str2); // he ll o
//去除所有空格
var result = str2.replace(/\s/g,""); //hello
//去除前面的空格
result = str2.replace(/^\s*/,""); //he ll o
//去除后面的空格
result = str2.replace(/(\s*)$/,""); // he ll o
console.log(result);
2.邮件正则
var reg = /^\w+@[a-z0-9]+\.[a-z]{2,5}$/;
document.write(reg.test("[email protected]")); //true