博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式常用方法和规则整理
阅读量:5826 次
发布时间:2019-06-18

本文共 1680 字,大约阅读时间需要 5 分钟。

作者:心叶

时间:2018-04-28 09:33

一:常用正则对象方法

RegExpObject.exec(string)

检索字符串中指定的值,如果匹配到,返回格式如下: { 0:'匹配的字符串', 1:'匹配的第一个元祖,如果有的话', 2:'以此类推,第二个元祖', ...... index:'匹配文本的第一个字符的位置', input:'输入的匹配的原来字符串', length:'0,1,2,...的个数' } exec如果匹配不到,返回null。

重要事项:完成了一次模式匹配之后检索新的字符串前应该手动地把正则对象的lastIndex属性重置为 0。

RegExpObject.test(string)

检索字符串中指定的值,如果字符串 string 中含有与RegExpObject匹配的文本,则返回 true,否则返回 false。

二:常用字符串对象方法

stringObject.search(regexp)

检索与正则表达式相匹配的值,返回stringObject中第一个与regexp相匹配的子串的起始位置,如果没有找到返回-1;search()方法不执行全局匹配,它将忽略标志 g。它同时忽略regexp的lastIndex属性,并且总是从字符串的开始进行检索,这意味着它总是返回stringObject的第一个匹配的位置。

stringObject.match(searchvalue|regexp)

找到一个或多个正则表达式的匹配,返回匹配的字符串数组。

stringObject.replace(regexp|substr,replacement|function)

替换与正则表达式匹配的子串。

温馨提示:其中function传递进去的是匹配的字符串,return返回的是最后替换成的,类似管道的写法。

stringObject.split(separator[,howmany])

把字符串分割为字符串数组,返回切割后的数组。

三:零宽断言

零宽,意味者不会返回匹配的字符;断言,就是预测此处是什么。因此这是一种匹配不返回,只是猜测固定位置应该是什么的存在。

3.1 匹配目标的后面是exp:(?=exp)

比如现在需要匹配一个单词是以ing结尾的,但是结尾的ing不捕获,可以这样使用:

//返回结果是["do", "heee"]。"name-doing-text-heeeing".match(/([a-z]+(?=ing))/g);

3.2 匹配目标的后面不是exp:(?!exp)

比如现在需要在一个单词里面寻找一些字母,这些字母的下一个字母不可以是e,可以这样使用:

//返回的结果是["d", "e", "a", "m"]"dream".match(/([a-z]{1}(?!e))/g);

3.3.(? <=exp)【 匹配exp后面的位置[亲自测试JavaScript中不支持]】

3.4 "(?<!exp)"【匹配前面不是exp的位置[亲自测试JavaScript中不支持]】

如 "abc123 " 正则 "(?<![0-9])123" 匹配"123"前面是非数字的结果也可写成"(?!<d)123"

四:懒惰限定符

1."*?"【重复任意次,但尽可能少重复】

//1-name-2'1-name-2-name-2'.match(/1.*?2/);//1-name-2-name-2'1-name-2-name-2'.match(/1.*2/);

2.+?【重复1次或更多次,但尽可能少重复】

3.??【重复0次或1次,但尽可能少重复】

4.{n,m}?【重复n到m次,但尽可能少重复】

5.{n,}?【重复n次以上,但尽可能少重复】

五:捕获分组

1.(exp)【匹配exp,并捕获文本到自动命名的组里】

2.(?<name>exp)【匹配exp,并捕获文本到名称为name的组里[亲自测试JavaScript中不支持]】

3.(?:exp)【匹配exp,不捕获匹配的文本,也不给此分组分配组号】

转载地址:http://sosdx.baihongyu.com/

你可能感兴趣的文章
如何创建Servlet
查看>>
.NET 设计规范--.NET约定、惯用法与模式-2.框架设计基础
查看>>
win7 64位+Oracle 11g 64位下使用 PL/SQL Developer 的解决办法
查看>>
BZOJ1997:[HNOI2010]PLANAR——题解
查看>>
BZOJ1014:[JSOI2008]火星人prefix——题解
查看>>
使用Unity3D引擎开发赛车游戏
查看>>
HTML5新手入门指南
查看>>
opennebula 开发记录
查看>>
ubuntu 修改hostname
查看>>
sql 内联,左联,右联,全联
查看>>
C++关于字符串的处理
查看>>
6、Web Service-拦截器
查看>>
Flask 源码流程,上下文管理
查看>>
stream classdesc serialVersionUID = -7218828885279815404, local class serialVersionUID = 1.
查看>>
ZAB与Paxos算法的联系与区别
查看>>
Breaking parallel loops in .NET C# using the Stop method z
查看>>
修改故障转移群集心跳时间
查看>>
[轉]redis;mongodb;memcache三者的性能比較
查看>>
微软职位内部推荐-Sr DEV
查看>>
让你的WPF程序在Win7下呈现Win8风格主题
查看>>