正则表达式
正则表达式介绍
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
正则表达式语法
1、使用构造方式创建正则表达式
var reg=new RegExp(“正则表达式”,“匹配原则”);
正则表达式的第二个参数可以有两个:
- i:表示忽略大小写
- g:表示全局匹配模式
2、还可以使用字面量来创建正则表达式
语法:var reg=/正则表达式/匹配原则 如:var reg=/a/i;
正则表达式的知识点
使用|表示或者的关系,中括号里面的内容也是或者的关系。
例如:
[a-z]:任意的小写字母之间是或者的关系
[A-z]:表示任意字母^:表示一个字符串以什么开头;$:表示一个字符串以什么结尾
[^]: 除了,表示一个字符串里除了某个字符串,其它都满足
(?=exp):匹配exp前面的位置
(?<=exp):匹配exp后面的位置
(?!exp):匹配后面跟的不是exp的位置
(?<!exp):匹配前面不是exp的位置
正则表达式的量词
通过量词可以设置一个内容出现的次数,量词只与它前面的一个内容起作用。
- { n }:表示正好出现n次
- { m,n }:表示出现m到n次
- { m, }:表示出现m次及以上
- +:表示出现至少一次,相当于{ 1, }
- *:表示出现0次或多次,相当于{ 0, }
- ?:表示出现0次或1次,相当于{ 0,1 }
正则表达式中的转义
在正则表达式中使用\表示转义,.表示任意字符,在正则表达式中若要判断一个字符串中是否含有.,需要用\ .表示..
注:使用正则表达式的构造函数时,由于它的参数是一个字符串,而\是字符串中的转义字符,所以使用 \需要用\ \代替
正则表达式中的一些表示
\ w:表示任意字母、数字和下划线
\ W:表示除了任意字母、数字和下划线
\ d:表示任意数字
\ D:表示除了任意数字
\ s:表示空格
\ S:表示除了空格
\ b:表示单词边界
\ B:表示除了单词边界
举例介绍:
reg=/\bChild\b/; //表示Child前后不能有其它的字符
reg=/\BChild\B/; //表示Child前后必须有其它的字符
使用正则表达式去除字符串中的空格
去除字符串中的前后空格,用""来替换。
- 去除开头的空格
var str=" 1a 2b3c 4d5 ";
str=str.replace(/^\s*/,"");
console.log(str);
执行结果如下
- 去除结尾的空格
var str=" 1a 2b3c 4d5 ";
str=str.replace(/\s*$/,"");
console.log(str);
执行结果如下
- 去除开头和结尾的空格
var str=" 1a 2b3c 4d5 ";
str=str.replace(/^\s* || \s*$/g,"");
console.log(str);
执行结果如下
正则表达式的方法
- test()
该方法的返回值是布尔值,通过该值可以匹配字符串中是否存在于正则表达式相匹配的结果,如果有匹配内容,返回ture,如果没有匹配内容返回false,该方法常用于判断用户输入数据的合法性,比如检验Email的合法性.
基本语法:
- objReg.test(objStr)
- objReg 必选项 RegExp对象名称
- objStr 要进行匹配检测的字符串
举例
var reg=new RegExp("a","i"); // reg=/a/i;
reg=/a/i;
console.log(reg.test("ababc")); //检查一个字符串里是否有a或者A
- split()
该方法可以将一个字符串拆分为一个数组,方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式来拆分字符串,这个方法即使不指定全局匹配,也会全局检索。
举例
var str="1a2b3c4D5F6"; //定义一个字符串str
var result=str.split(/[A-Z]/i); //通过字母拆分字符串,不区分大小写
console.log(result);
执行结果如下
- search()
该方法可以搜索字符串中是否含有指定内容,如果搜索到指定内容,则返回第一次出现的索引,如果没有搜索到指定内容,则返回-1.它可以接收一个正则表达式,通过正则表达式去检索字符串,search只会查找第一个。
举例
var str="hello abc hello adc hello afc";
//搜索字符串中是否含有abc或者adc或者afc
var result=str.search(/a[A-z]c/);
console.log(result);
执行结果如下:
- match()
可以根据正则表达式,从一个字符串中将符合条件的内容提取出来,默认情况下match只会提取出第一个符合条件的内容,找到之后停止检索, 这时候我们可以设置正则表达式为全局匹配模式,这样就会检索所有的内容,可以为一个正则表达式设置多个匹配模式,且顺序无所谓, match()会将匹配到的内容封装到一个数组中,即使只查询到一个内容。
举例
var str="1a2b3c4d5e6f";
var result=str.match(/[A-z]/g);// /[A-z]/gi:两个匹配模式,既全局匹配又忽略大小写
console.log(result);
console.log(typeof result); //检测result的类型
console.log(Array.isArray(result)); //检测是否为数组
console.log(result[2]);
执行结果如下:
- replace()
可以将字符串中的指定内容转换为新内容。接收两个参数:
1:要被替换的内容
2:新内容
举例
var str="喵了个咪蹦啥卡拉卡喵了个咪蹦沙卡瞄了拉卡个咪";
var result=str.replace(/喵了个咪/g,"***"); //将字符串中的"喵了个咪"替换为"***"
console.log(result);
执行结果如下: