正则总结 - 不完全深入版

前端之家收集整理的这篇文章主要介绍了正则总结 - 不完全深入版前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

何为正则

正则使用的范围相当广泛,在各种各样的编程语言或者脚本语言都能看到他们的身影;那么,何为正则.
 就我个人理解..就是个过滤器,用特定的符号去匹配特定的内容,变动特定的符号的组合来达到匹配各种各样自己需要得到的内容

 我们这里不谈所谓的正则解析引擎,也不过多的深入,只是平时粗浅使用的经验总结

特定符号[元字符]

千篇一律,介绍下元字符

元字符 作用简单描述
. 匹配除换行符以外的任意字符
\w 匹配字母、数字、下划线或行字
\W 匹配任意非字母、数字、下划线或汉字的字符
\s 匹配任意的空白符
\S 匹配任意非空白符的字符
\d 匹配数字
\D 匹配任意非数字的字符
\b 匹配单词的开始或结束
\B 匹配不是单词开口或结束的位置
^ 匹配字符串的开始
$ 匹配字符串的结束
\G 上一个匹配的结尾(本次匹配开始)
\A 字符串开头(类似^,但不受处理多行选项的影响)
\Z 字符串结尾或行尾(不受多行选项的影响)
\z 字符串结尾(类似$,但不受处理多行选项的影响)
* 重复匹配零次或更多次
+ 重复匹配一次或多次
? 重复匹配零次或一次
{n} 重复匹配n次
{n,} 重复匹配n次或更多次
{n,m} 重复匹配n到m次
\n 匹配一个换行符。等价于\x0a和\cJ。
\r 匹配一个回车符。等价于\x0d和\cM。

字符转义

需要转义的字符有:$,(,),*,+,.,[,],?,^,{,},|。

零宽断言

零宽断言表示匹配字符的时候再添加一些定位条件,使匹配更精准。

正则表达式 说明
\w+(?=ing) 匹配以ing结尾的多个字符(不包括ing)
\w+(?!ing) 匹配不是以ing结尾的多个字符
(?<=re)\w+ 匹配不是以re开头的多个字符(不包括re)
(? 匹配不是以re开头的多个字符
(?<=\s)\d+(?=\s) 匹配两边是空白符的数字,不包括空白符

贪婪与懒惰

贪婪: 匹配尽可能长的字符串;

懒惰:匹配尽可能短的字符串;

懒惰模式的启用只需在重复元字符之后加上?即可。


JS正则

在ES5中,JS的正则声明的写法类似数组或者对象,也是通过new来实现

var re = new RegExp();

这货接受两个参数,匹配的内容及处理方式

var re = new RegExp("age","igm")

var re = new RegExp(/age/igm) 此时不能接受第二个参数,因为已经包含

或者

var re = /age/igm; 此时不能接受第二个参数,因为已经包含

其中的igm分别代表,忽略大小写,全局匹配,多行匹配[可选项,一个多个模式都行]

声明之后,应有调用:

  • test – RegExp的test方法用来测试字符串是否匹配给出的匹配模式,返回布尔值;
  • exec – RegExp的exec方法返回包含第一个匹配的的数组或null;
  • match – String的match方法返回包含所有匹配子字符串的数组;
  • replace – String的replace方法完成string的替换操作,支持正则表达式;
  • search – 与String的indexof方法类似,不同的是search支持正则表达式,而不仅仅是字符串;
  • split – 按照一定规则拆分字符串并将子字符串存储到数组中的String方法

方法测试–chrome下的console

var re = new RegExp("m","mgi"); //声明

 re.test("abcdefg"); //return false

 re.exec("kvsdlkfjzj;vjm"); //["m"]

 str = "fasklweoiaurjafm.;kzscmz.,mca cmvnka;djfaw;eruweiorj"
 str.match(re);    //["m","m","m"]
 str.search(re);   //15
 str.replace(re,"AAA") //"fasklweoiaurjafAAA.;kzscAAAz.,AAAca cAAAvnka;djfaw;eruweiorj"

 re2 = /;/g;
 str.split(re2)   //["fasklweoiaurjafm.","kzscmz.,mca cmvnka","djfaw","eruweiorj"]
原文链接:/regex/359434.html

猜你在找的正则表达式相关文章