前言
正则表达式用于定义一些字符串的规则,计算机可以根据正则表达式来检查一个字符串是否敷个规则,也可以将字符串中符合规则的内容提取出来
创建正则表达式
方法一:
通过“new RegExp(“正则表达式”,“匹配模式”)创建一个RegExp对象
其中匹配模式为可选项,有三个取值g:全局匹配;i:不区分大小写;m:多行匹配
var reg = new RegExp("正则","匹配模式");
方法二:使用字面量创建正则表达式
/*语法*/
var reg = /正则表达式/匹配模式
调用RegExp对象中的方法
RegExp对象给我们提供了三种方法,test()、exec()和compile()
test()
检索字符串中指定的值。返回 true 或 false。
var reg = new RegExp("a","i");//在字符串中不区分大小写找a
alert(reg.test("abc"));//true
alert(reg.test("bc"));//false
一些常用的正则语法:
| 或
[] 或
[^ ] 除了
[a-z] 小写字母
[A-Z] 大写字母
[A-z] 任意字母
[0-9] 任意数字
var reg = /a|b/ //找a或b
var reg = /[ab]/ //找a或b
var reg = /[^ab]/ //除了a和b有其他字符则返回true
var reg = /[a-z]/ //有任意小写字母就返回true
var reg = /[A-Z]/
var reg = /[A-z]/ //有任意字母就返回true
var reg = /[0-9]/ //有任意字母
var reg = /a{3}/ //有aaa
量词:通过量词可以设置一个内容出现的次数
量词只对它前面的一个内容起作用,可以使用()圈出一个整体
{n} 正好出现n次
{m,n} 出现m-n次
{m,} 出现m次以上
+ 至少一个,相当于{1,}
* 0个或多个,相当于{0,}
? 0个或1个,相当于{0,1}
检查一个字符串的开头和结尾
^ 表示开头 eg:/^a/ 匹配开头的a,注意区分/[^a]/
$ 表示结尾 eg: /a$/
一个小坑:
现在假如我需要在字符串中查找 \ 字符,此时需要用转义字符。
var reg = /\\/
console.log(reg.test("\\")); //注意:test参数是字符串也需要转义,所以只有一个\,下面的代码进行测试
var str = "\\"
console.log("str = "+str);
接下来我们注意看使用构造函数来创建正则表达式
var reg = new RegExp("\\"); //会在此处报错,原因还是一样,构造函数中传的事字符串,用于转义的\也需要转义,所以正确写法是 var reg = new RegExp("\\\\");
console.log(reg.test("\\"));
exec()
检索字符串中指定的值。匹配成功返回一个数组,匹配失败返回null。
compile()
compile() 方法用于改变 RegExp。
compile() 既可以改变检索模式,也可以添加或删除第二个参数。