资讯专栏INFORMATION COLUMN

玩转javascript RegExp对象

alexnevsky / 2170人阅读

摘要:玩转对象中的正则表达式的正则表达式语法极大地借鉴了另一种脚本语言的正则表达式语法对象是的一个内置对象,与,类似。创建对象可通过构造函数创建。当要根据用户输入来构造正则表达式时,必须采用构造函数方式。如与被看做相同的字符模式。

玩转javascript RegExp对象 js中的正则表达式

js的正则表达式语法极大地借鉴了另一种脚本语言Perl的正则表达式语法.
RegExp对象是js的一个内置对象,与String,Array类似。

创建RegExp对象

可通过构造函数RegExp()创建。---当要根据用户输入来构造正则表达式时,必须采用构造函数方式。

var re=new RegExp("","gi");

需要注意的是这个特殊字符在js中表示退格,在正则表达式中特殊字符之前需要再加一个反斜杠,因此变成了,正则表达式作为参数传给RegExp()构造函数,属性字符g,i,m作为构造函数的第二个参数.

可通过字面量语法创建,例:

var re=/dd/;

其中斜杠(/)表示正则表达式的开始和结束。告诉js,这是一个正则表达式,就像引号是字符串的开始和结束一样的.

语法
var patt=new RegExp(pattern,modifiers);

或者更简单的方式:

var patt=/pattern/modifiers;

pattern(模式) 描述了表达式的模式

modifiers(修饰符) 用于指定全局匹配、区分大小写的匹配和多行匹配

G---全局匹配,查找所有与模式匹配的子串,而不是在找到第一个匹配的字符后就停止

I---模式不区分大小写。如:Paul与paul被看做相同的字符模式。

m---多行标志。制定特殊字符^和$可以匹配多行文本和字符串的开始和结束

正则表达式和String对象的split()-返回数组,match-返回数组,search()-返回索引,在正则表达式中也只能找到第一个匹配的字符组,全局匹配对它无效,replace()-替换结合使用才能发挥它的强大功能。
具体的正则表达式特殊字符就不在此列举了(太多了)。

简单的实例

我们就举几个简单的例子了解一下正则表达式的功能实现
实例1. 要匹配1-800-888-5474的电话号码,使用正则表达式:

var a="1-800-888-5474";
var re=/d-d{3}-d{3}-d{4}/gi;
var b=a.match(re);
console.log("b:"+b);

后台输出b:1-800-888-5474,d{3}表示出现三个数字,{n}表示前一项出现n次,?表示前一项出现0次或1次

实例2.

    var a="1997,1998,2000,2001,2002,2000,paul,paula,paulab,pau";    
    var b=a.match(/2000?1?2?/gi);
    var d=a.match(/paul?a?b?/gi);
    var e=a.replace(/2000?1?2?/gi,"2017")
    var f=a.replace(/paul?a?b?/gi,"room")    
    console.log("b:"+b);
    console.log("d:"+d);
    console.log("e:"+e);
    console.log("f:"+f);

输出结果如下:

示例中,
b:输出19世纪的年份组成的数组
d:输出所有含有pau字符组成的数组
e:把字符串中的19世纪年份全替换为2017年
f:把字符串中含有pau的字符串全部替换为room.

实例3. 位置字符,B的深入理解

    var a="hello world,I am a girl.";
    var re1=//gi;
    var re2=/B/gi;
    var b=a.replace(re1,"|");
    var c=a.replace(re2,"|");
    console.log("b:"+b);
    console.log("c:"+c);

结果如下:

可以从结果中看出:的位置是在单词的前后(单词字符与非单词字符之间的位置),B的位置在单词的前后,除却了位置,剩余的所有位置。

实例4. 正则表达式的分组
如何实现分组的,只需要将它们放在()中,正则表达式中的()是将字符模式组合起来的特殊字符,圆括号本身不是要匹配的字符。
如:

var s="javascript,vbscript and php";

要求用同一个正则表达式匹配javascript和vbscript.

var s="javascript,vbscript and php";
var re=/(vb|java)script/gi;
s=s.replace(re,"aa");
alter(s);

其中|,是分组里面的特殊字符,和||(或)的含义是一样的。

实例5:单引号替换双引号

var re=/B"|"B/gi;

实例6:使用$引用分组

var a="2012,2013,2014"
//把a修改为"2012年,2013年,2014年"
var re=/(d{4})/gi;
//就可以在替换的字符中使用序号1的分组了:
a=a.replace(re,"$1年");
//输出2012年,2013年,2014年。

还有其他的方法可以实现,这个我觉得相对简便一些,具体的用法还要在实际项目中使用。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88420.html

相关文章

  • 一篇文章带你玩转正则表达式

    摘要:读这篇文章之前你需要掌握基本的知识,并且有安静舒适的环境与宽裕的时间,文章有点长,你可以选择备好或茶来慢慢学习。文章标题有点夸大了,这是一篇正则表达式的入门文章。如有错误,欢迎指正。 读这篇文章之前你需要掌握基本的JavaScript知识,并且有安静舒适的环境与宽裕的时间,文章有点长,你可以选择备好coffee或茶来慢慢学习。文章标题有点夸大了,这是一篇正则表达式的入门文章。如有错误,...

    ermaoL 评论0 收藏0
  • JavaScript正则表达式的匹配模式

    摘要:选择分组和引用正则表达式的语法还包括指定选择项子表达式分组和引用前一子表达式的特殊字符。带圆括号的表达式的另一个用途是允许在同一正则表达式的后部引用前面的子表达式。 正则表达式(regular expression)是一个描述字符模式的对象。JavaScript的 RegExp类 表示正则表达式,String和RegExp都定义了方法,后者使用正则表达式进 行强大的模式匹配和文本检索与...

    wqj97 评论0 收藏0
  • 玩转Koa -- koa-router原理解析

    摘要:四路由注册构造函数首先看了解一下构造函数限制必须采用关键字服务器支持的请求方法,后续方法会用到保存前置处理函数存储在构造函数中初始化的和属性最为重要,前者用来保存前置处理函数,后者用来保存实例化的对象。 一、前言   Koa为了保持自身的简洁,并没有捆绑中间件。但是在实际的开发中,我们需要和形形色色的中间件打交道,本文将要分析的是经常用到的路由中间件 -- koa-router。   ...

    wthee 评论0 收藏0
  • 正则表达式

    摘要:本文内容共正则表达式火拼系列正则表达式回溯法原理学习正则表达式,是需要懂点儿匹配原理的。正则表达式迷你书问世了让帮你生成和解析参数字符串最全正则表达式总结验证号手机号中文邮编身份证地址等是正则表达式的缩写,作用是对字符串执行模式匹配。 JS 的正则表达式 正则表达式 一种几乎可以在所有的程序设计语言里和所有的计算机平台上使用的文字处理工具。它可以用来查找特定的信息(搜索),也可以用来查...

    bang590 评论0 收藏0
  • JavaScript正则进阶之路——活学妙用奇淫正则表达式

    摘要:正则大法好,正则大法好,正则大法好,重要的事情说三遍。第二部分,这个部分是整个表达式的关键部分。学习正则如果还没有系统学习正则表达式,这里提供一些网上经典的教程供大家学习。正则表达式使用单个字符串来描述匹配一系列匹配某个句法规则的字符串。 原文收录在我的 GitHub博客 (https://github.com/jawil/blog) ,喜欢的可以关注最新动态,大家一起多交流学习,共同...

    BearyChat 评论0 收藏0

发表评论

0条评论

alexnevsky

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<