加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则总结 - 不完全深入版

发布时间:2020-12-14 04:28:20 所属栏目:百科 来源:网络整理
导读:何为正则 正则使用的范围相当广泛,在各种各样的编程语言或者脚本语言都能看到他们的身影;那么,何为正则. 就我个人理解..就是个过滤器,用特定的符号去匹配特定的内容,变动特定的符号的组合来达到匹配各种各样自己需要得到的内容 我们这里不谈所谓的正则解析引

何为正则

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

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

特定符号[元字符]

千篇一律,介绍下元字符

元字符 作用简单描述
. 匹配除换行符以外的任意字符
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"]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读