1.什么是正则,常用的处理方式
正则:它是一个规则,用来处理字符串的一个规则
处理:
// (1)判断一个字符串是否符合我们制定的规则 ->test"reg.test(str) var reg = /\d/; //->包含一个0-9之间的数字 console.log(reg.test("正则")) //false console.log(reg.test("1")) //true console.log(reg.test("正则1")) //true // (2)把字符串中符合我们正则规则的内容捕获到->exec:reg.exec(str) var reg = /\d/; //->包含一个0-9之间的数字 console.log(reg.exec("正则")) //null console.log(reg.exec("1")) //["1",index:0,input:"1"] console.log(reg.exec("正则1")) //true
2.如何创建一个正则
有两种方式:
字面量方式:var reg = /\d/;
实例创建方式:var reg = new regExp("/\d/");
注:两种创建方式是有区别的,创建对象的两种方式是没有区别的。
字面量方式和实例的创建方式在正则的区别?
1)字面量方式中出现的一切都是元字符,所以不能进行变量值的拼接,而实例创建的方式是可以的
2)字面量方式中直接写\d就可以,而实例中需要把它进行转译成\\d
var name = 'peiqi'; // 在字面量方式中,我们//之间包起来的所有内容都是元字符,有的具有特殊的意义,大部分都是代表本身含义的普通元字符 var reg = /^\d+"+name+"\d+$/; console.log("212peiqi123") //false console.log('212""peiqi"123') //true // 对于这样的需求,我们只能使用实例创建的方式 var reg = new RegExp("/^\\d+"+name+"\\d+$/"); console.log("212peiqi123") //true
3.如何学习正则
console.dir(RegExp.prototype) :这个可以看到RegExp原型上的方法。
元字符:每一个正则都是由元字符和修饰符组成的。[元字符]->在//之间具有意义的一些字符
常用的正则元字符
\ | 转义后面字符所代表的含义 |
^ | 以某一个元字符开始 |
$ | 以某一个元字符结尾 |
\n | 匹配一个换行符 |
. | 除了\n以为的任意字符要匹配 . ,请使用 \. 。 |
\r | 匹配一个回车符 |
() | 分组->把一个大正则本身划分成几个小的正则 |
x|y | x或y中的一个 |
[xyz] | xyz中的一个 |
[^xyz] | 除了这三个之外的任意字符 |
[a-z] | a到z之间的任意字符 |
[^a-z] | 除了a-z之间的任意字符 |
\d | 匹配一个0-9之间的数字 |
\D | 除了0-9之间的数字意外的任意字符 |
\b | 一个边界符"w1 w2 w3" |
\w | 数字、字母、下划线中的任意一个字符[0-9a-zA-Z] |
\s | 匹配一个空白的字符、空格、一个制表符、换行符... |
\S | 匹配任何非空白字符 |
特殊字符
* | 代表出现次数的量词字元字符,* 等价于{0,} |
+ | 出现1到多次,等价于{1,} |
? | 可能出现0次或1次,等价于{0,1} |
{n} | 出现n次 |
{n,} | 出现n到多次 |
{n,m} | 出现n到m次 |
修饰符
i | 不缺分大小写 | |
g(全局匹配) | 查找所有匹配项 | |
s(特殊字符圆点.中包含换行符\n) | 默认情况下的圆点.是匹配除换行符\n之外的字符,加上s修饰后的,.中包含换行符\n | |
m(多行匹配) | 使边界字符^和$匹配每一行中的开头和结尾,记住是多行,而不是整个字符串的开头和结尾 |
4.常用的正则匹配规则
match()
var str="Google runoob taobao runoob"; var n1=str.match(/runoob/); // 查找第一次匹配项 var n2=str.match(/runoob/g); // 查找所有匹配项
推荐一些匹配规则的文章:
https://www.cnblogs.com/mrwill/archive/2018/01/28/8371409.html