博学谷 > 资讯 > 其他 > 深入解析 正则表达式的四种操作

原创 深入解析 正则表达式的四种操作

发布时间:2019-07-11 19:32:00 浏览 44 来源:博学谷资讯 作者:照照

    正则表达式是匹配模式,不管如何使用正则表达式,万变不离其宗,都需要先“匹配”。有了匹配这一基本操作后,才有其他的操作:验证、切分、提取、替换。下面小编来深度解析,正则表达式的四种操作。

     

     

    深入解析 正则表达式的四种操作

     

     

    1、验证

     

    验证是正则表达式最直接的应用,比如表单验证。在说验证之前,先要说清楚匹配是什么概念。所谓匹配,就是看目标字符串里是否有满足匹配的子串。因此,“匹配”的本质就是“查找”。有没有匹配,是不是匹配上,判断是否的操作,即称为“验证”。这里举一个例子,来看看如何使用相关API进行验证操作的。

     

    比如,判断一个字符串中是否有数字。

     

    ·使用search

     

    var regex = /\d/;var string = "abc123";console.log( !!~string.search(regex) );// => true复制代码

     

    ·使用test

     

    var regex = /\d/;var string = "abc123";console.log( regex.test(string) );// => true复制代码

     

    ·使用match

     

    var regex = /\d/;var string = "abc123";console.log( !!string.match(regex) );// => true复制代码

     

    ·使用exec

     

    var regex = /\d/;var string = "abc123";console.log( !!regex.exec(string) );// => true复制代码

     

    其中,最常用的是test。

     

    2、切分

     

    配上了,我们就可以进行一些操作,比如切分。

     

    所谓“切分”,就是把目标字符串,切成一段一段的。在JS中使用的是split。

     

    比如,目标字符串是"html,css,javascript",按逗号来切分:

     

    var regex = /,/;var string = "html,css,javascript";console.log( string.split(regex) );// => ["html", "css", "javascript"]复制代码

     

    又比如,如下的日期格式:

     

    2017/06/26

     

    2017.06.26

     

    2017-06-26

     

    可以使用split“切出”年月日:

     

    var regex = /\D/;console.log( "2017/06/26".split(regex) );console.log( "2017.06.26".split(regex) );console.log( "2017-06-26".split(regex) );// =>

     

    ["2017", "06", "26"]// => ["2017", "06", "26"]// => ["2017", "06", "26"]复制代码

     

    3、提取

     

    虽然整体匹配上了,但有时需要提取部分匹配的数据。

     

    此时正则通常要使用分组引用(分组捕获)功能,还需要配合使用相关API。

     

    这里,还是以日期为例,提取出年月日。注意下面正则中的括号:

     

    ·match

     

    var regex = /^(\d{4})\D(\d{2})\D(\d{2})$/;var string = "2017-06-26";console.log( string.match(regex) );// =>["2017-06-26", "2017", "06", "26", index: 0, input: "2017-06-26"]复制代码

     

    ·exec

     

    var regex = /^(\d{4})\D(\d{2})\D(\d{2})$/;var string = "2017-06-26";console.log( regex.exec(string) );// =>["2017-06-26", "2017", "06", "26", index: 0, input: "2017-06-26"]复制代码

     

    ·test

     

    var regex = /^(\d{4})\D(\d{2})\D(\d{2})$/;var string = "2017-06-26";

     

    regex.test(string);console.log( RegExp.$1, RegExp.$2, RegExp.$3 );// => "2017" "06" "26"复制代码

     

    ·search

     

    var regex = /^(\d{4})\D(\d{2})\D(\d{2})$/;var string = "2017-06-26";

     

    string.search(regex);console.log( RegExp.$1, RegExp.$2, RegExp.$3 );// => "2017" "06" "26"复制代码

     

    ·replace

     

    var regex = /^(\d{4})\D(\d{2})\D(\d{2})$/;var string = "2017-06-26";var date = [];

     

    string.replace(regex, function(match, year, month, day) {

     

    date.push(year, month, day);

     

    });console.log(date);// => ["2017", "06", "26"]复制代码

     

    其中,最常用的是match。

     

    4、替换

     

    找,往往不是目的,通常下一步是为了替换。在JS中,使用replace进行替换。

     

    比如把日期格式,从yyyy-mm-dd替换成yyyy/mm/dd:

     

    var string = "2017-06-26";var today = new Date( string.replace(/-/g, "/") );console.log( today );// => Mon Jun 26 2017 00:00:00 GMT+0800 (中国标准时间)复制代码

     

    这里只是简单地应用了一下replace。但,replace方法是强大的,是需要重点掌握的。

     

    以上就是正则表达式的四种操作,都是干货,大家收藏起来吧!

上一篇:TCP和UDP各自有哪些优缺点?它们有什么区别? 下一篇:IT行业热门编程语言有哪些?它们主要的应用领域是什么?

相关推荐 更多

最新文章

扫描二维码,了解更多信息