JavaScript 正则
Posted qq1137674424
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 正则相关的知识,希望对你有一定的参考价值。
正则:检测字符串的一条规则
Json的本质 还是字符串
1.正则的定义:简写 :/规则/ 比如 /45613/ 检测字符串必须有45613
字符串和正则有关的方法:
Match() 查找一个或多个正则表达式的匹配,有就返回查找的结果,没有就null
语法:string.match(reg)
Search() 查找与正则表达式相匹配的值,检索不到就返回-1,检索到就返回查找的字符首次在字符串的位置
语法:string.search(reg)
Replace():在字符串中查找匹配的字串,并替换与正则表达式匹配的字串,如果检索到 返回替换后的新字符串,如果没有检索到 返回原字符串。
语法:string.replace(reg(查找的内容),newstring(替换))
注意的:
1.字符串中的. 在正则中如果就代表一个. 需要转义\\.
/. /:代表任意一个字符 / \\. /:代表一个.
字符串检索 分两种结果
第一种是查找型,查找到就终止,不会向下继续查找。
第二种是捕获型:捕获型分两种:
第一种是捕获首次出现的
第二种是捕获所有的 (和/g有关)
正则对象的两个方法
Test():检索字符串中的值,检索到返回true,检索不到false
语法:reg.test(string)
Exec():检索字符串中指定的值,返回值是一个数组,
有找到的值并确定其位置,找不到返回null
语法:reg.exec(string)
正则的性质:
1、正则的懒惰性:
正则在捕获的时候,当第一次捕获成功了,就直接返回,就不在向下捕获,这就叫做正则的懒惰性
解决正则的懒惰性:
在正则的后面加上修饰符/g
2、正则的贪婪性:
例如:/ \\d+ /去捕获一个字符串中的数字,他回尽可能多的捕获全部符合条件的 这叫正则的贪婪性。
解决正则的贪婪性
/ \\d+ / +代表1个或多个数字
?代表0个或1个
在+后面跟一个? / \\d+? / 取一个
var str = "hello 456";
// var reg = /\\d+/g; //456
var reg = /\\d+?/g; //4
var s = reg.exec(str);
console.log(s);
分组捕获
():这是分组捕获的标志
将大正则分组成几个小正则 在正则中\\1 代表第一个分组 \\2代表第二个分组
比如 /(a)(b)\\1\\2/ 代表的是abab这个规则
在分组过程中
var reg = /(a)(b)\\1\\2/;
// 将大正则分成两个小正则
// 一个是/a/ 一个是/b/
// \\1代表第一组 \\2代表第二组
var str = "abab";
var s = reg.exec(str);
console.log(s);
在分组捕获中 即返回了大正则的捕获结果,也返回 了小正则的捕获结果
如果不想捕获某一个分组中的内容 在对应的分组中的前面加上?:即可
同时分组引用(\\1\\2)也失效
var reg = /(a)(?:b)\\1/
var str ="abab";
console.log(reg.exec(str)); aba a
var reg = /(a)(b)/; //ab a b
var str = "aabb";
// var str = "ccdd" //null 捕获不成功
var s= reg.exec(str);
console.dir(EegExp);
console.log(s)
一旦分组捕获成功 在正则的类上回给$1 $2等赋值
RegExp.$1 也是分组引用 在正则外起作用
\\1也是分组引用 只能在正则中起作用
在分组捕获中 即返回了大正则的捕获结果,也返回 了小正则的捕获结果
如果不想捕获某一个分组中的内容 在对应的分组中的前面加上?:即可
同时分组引用(\\1\\2)也失效
以上是关于JavaScript 正则的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript之基础-10 JavaScript 正则表达式(概述定义正则RegExp对象用于模式匹配的String方法)