您现在的位置是:首页 > 文章详情

JavaScript 正则表达式(匹配,提取,替换)

会飞的猪2018-12-09176人围观
简介白码驿站是一个面向开发者的知识共享社区,专注于为开发者打造一个纯净的技术交流社区(源码下载,免费在线图片压缩,jquery插件,插件下载,JS/CSS在线压缩。)-白码驿站

        正则表达式作为一种匹配处理字符串的利器在很多语言中都得到了广泛实现和应用,JavaScript作为一门常用于web开发的语言,必然要具备正则这种强大的特性,但是C#中正则表达式与JavaScript的语法大近相同, 不过也有不同之处,本文将对JS中的正则用法及常用函数进行一番总结。

正则匹配

创建正则对象(语法):

                                        
var regex = new RegExp("正则表达式字符串", "可选参数");
boolean regex.test(要匹配的字符串);
                                

举个例子:

                                        
var regex = new RegExp("^\\d+$"); //匹配一个数字字符
alert(regex.test("1abc2345"));
                                

上面的代码执行结果为:“false”。大家应该注意到, 上面的“\d”需要被转义, 使用起来并不是很灵活,不过js提供了一种简单的写法, 也可以实现。

简写:

在双斜线之间写正则表达式(\不用转义)

                                        
var r = /^\d+$/;
alert(r.test("1abc2345"));
                                


正则替换

       在js中替换是string的方法,string;在字面值右边的斜线后加上可选参数g就表示全局模式

举个例子:

                                        
var date = "2018年12月09日";
var res = date.replace(/(\d+)年(\d+)月(\d+)日/, "$1-$2-$3");
                                

上面的代码会将日期转换为“xxxx-xx-xx”格式,执行结果:"2018-12-09"。关于替换方法,如果第一个参数不是正则表达式对象,而是一个字符串,就执行字符串的简单替换

replace替换默认是替换第一个匹配到的字符, 如果需要匹配所有, 需要使用全局模式(g),

下面来举个例子:

                                        
var str1 = "1a2b3c4d";
alert(str1.replace(/\d+/, "白码驿站"));
                                

上面的代码执行结果是:“白码驿站a2b3c4d”,如果加上全局模式(g),(拓展:如果是i, 表示忽略大小写,m:多行模式)

                                        
var str1 = "1a2b3c4d";
alert(str1.replace(/\d+/g, "白码驿站"));
                                

上面的代码执行结果是:“白码驿站a白码驿站b白码驿站c白码驿站d”


正则提取

        像数组的对象 regex.exec(要提取的字符串);如果正则表达式中没有分组,使用返回值[0]得到匹配字符串 ;如果有分组,使用返回对象[i] 访问第i组;但是这个匹配只匹配一次

举个例子:

                                        
var str = "112233abc45678defg001234567df";
var regex = /(\d)(\d+)(\d)/;
var m = regex.exec(str);
                                

上面的语法对匹配的数据进行了分组,所以 索引为0 匹配到的是第一个匹配,1 , 2,3是获取配到的数据分组。听起来是不是挺拗口的,那就来看你一下执行结果吧。 

执行结果

var m[0]  返回 112233

var m[1]  返回 1

var m[2]  返回 1223

var m[3]  返回 3

如果使用下面的代码,只会匹配到一组数据

                                        
var regex = /\d+/;
var m = regex.exec(str);
                                

执行结果为

var m[0]  返回 112233,

如果需要循环匹配,将字符串中所有满足要求的数字提取出来,需要使用全局模式(g),并且每次执行exec提取一个,在执行exec提取下一个,直到提取完毕返回null

                                        
var m = regex.exec(str);  // 112233
alert(m[0]);
m = regex.exec(str);		// 45678
alert(m[0]);
m = regex.exec(str);		// 001234567
alert(m[0]);
m = regex.exec(str);		// null
alert(m);
                                

所以,如果想要匹配所有, 这里就需要循环去匹配了, 这里就不一一介绍了。




文章评论

Top

目录

昵称:会飞的猪

职业:.net程序员

邮箱:753109098@qq.com

分类标签

本栏推荐

  • JavaScript 正则表达式(匹配,提取,替换)

    正则表达式作为一种匹配处理字符串的利器在很多语言中都得到了广泛实现和应用,JavaScript作为一门常用于web开发的语言,必然要具备正则这种强大的特性,但是C#中正则表达式与Jav...

  • JavaScript 继承的介绍及封装

    几乎每个开发人员都有面向对象语言(比如C#、Java)的开发经验。在面向对象的语言中,有两个非常重要的概念 - 类和实例。 类定义了一类事物公共的行为和方法;而实例则是类的一个具体实现...

  • JavaScript 中 扩展方法、原型概念(Prototype)

    原型 在JavaScript 每一个对象都有构造函数,而在JavaScript 中每一个函数都有一个属性,叫prototype(原型),JavaScript 构造函数创建的每一个对象都是...

  • C# 使用SqlTransaction进行事务处理

    事务处理基本原理 事务是将一系列操作作为一个单元执行,要么同时成功,要么同时失败,回滚到最初状态。在事务处理术语中,事务要么提交,要么中止。若要提交事务,所有参与者都必须保证对数据的...

  • JavaScript 之动态函数 - Function

    在 javaScript中,经常会使用到函数,普通函数虽然很方便,但是,形式略显复杂,特别是代码量大的时候,这时,我们可以使用动态函数,动态函数形式比较简洁,并且比普通函数表达式更灵活...