JAVASCRIPT 正则表达式 match、replace方法中使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【转载至】/dh19573681/archive/2009/08/21/4471438.aspx

正则表达式由来已久,查找替换功能非常强大,但模板难记复杂。JavaScript中String对象的match()、replace()这2个方法都要使用正则表达式的模板。当模板内容与字符串不相匹配时,match()返回null,replace()返回原字符串。

正则表达式的模板对象

//标准写法regexp = new RegExp(pattern[, flag]); pattern:

模板的用法是关键,也是本章的主要内容。

flag: "i"(ignore)、"g"(global)、"m"(multiline)的组合i-忽略大小写,g-反复检索,m-多行检索flag中没有g时,返回字符串,有g时返回字符串数组

var reg = new RegExp("飞雪","g");

var str = "风雨送春归飞雪迎春到,飞雪连天向天横";

var xx = str.(str.match(reg)); //xx的结果: xx[0]="飞雪"

alert(xx); // xx[1]="飞雪"//常用写法

regexp = new RegExp(/pattern/[flag]); //去掉引号逗号改用“/”

ar reg = new RegExp(/飞雪/g);

var str = "风雨送春归飞雪迎春到,飞雪连天向天横";

var xx = str.(str.match(reg)); //xx的结果: xx[0]="飞雪"

alert(xx); // xx[1]="飞雪"

//省略写法string.match(/pattern/flag);

整个模板对象省略,让JavaScript自动生成

//var reg = new RegExp(/飞雪/g);

var str = "风雨送春归飞雪迎春到,飞雪连天向天横";

var xx = str.(str.match(/飞雪/g)); //xx的结果: xx[0]="飞雪"

alert(xx); // xx[1]="飞雪"

模板的语法(即正规表现)

//字符串相匹配(包括单个字符)【字符串】

reg = new RegExp(/abc/ig); //匹配字符串"abc",多次,大小写不计

reg = new RegExp(/abc/ig);

xx = "123ABC xyz bca LMN AbC".match(reg); //xx为: ABC,AbC 注;bca不符合

//多个字符串中任意一个相匹配【|】

reg = new RegExp(/abc|xyz/ig); //字符串abc或xyz之间用|分割

注: 【|】不适用于下面的[...]内容

reg = new RegExp(/abc|xyz/ig);

xx = "123ABC xyz bcaLMN AbC".match(reg); //xx为: ABC,xyz,AbC

//字符串中任意一个字符相匹配【[...],[.-.]】

reg1 = new RegExp(/[abc]/ig); //匹配任意一个字符用[...]

reg2 = new RegExp(/[m-p]/ig); //连续字符串可用减号[.-.]

reg3 = new RegExp(/[0-9]/g); //判断是否包含数字

reg4 = new RegExp(/[a-z]/ig); //判断是否包含英文字母

//注: 【-】只是用于[...]中

reg1 = new RegExp(/[abc]/ig);

xx = "123ABC opq bca LMN AbC".match(reg1); //xx为: A,B,C,b,c,a,A,b,C

reg2 = new RegExp(/[m-p]/ig);

yy = "123ABC opq bca LMN AbC".match(reg2); //yy为: o,p,M,N

//字符串中任意一个字符不包含匹配【[^...]】

reg1 = new RegExp(/[^abc]/ig); //匹配任意一个字符都不被包含用^

reg2 = new RegExp(/[^m-p]/ig); //不包含mnop的任一字符

reg3 = new RegExp(/[^0-9]/g); //判断是否不包含数字

reg4 = new RegExp(/[^a-z]/ig); //判断是否不包含英文字母注: 【^】是在[...]的里面,不是后面所说的【^】在[...]外面

reg1 = new RegExp(/[^abc]/ig);

xx = "123ABCopqbcaLMN".match(reg1); //xx为: 1,2,3,o,p,q,L,M,N

reg3 = new RegExp(/[^0-9]/g);

yy = "123opqLMN".match(reg3); //yy为: o,p,q,L,M,N

//多个重复字符相匹配【{m,n}】说明: {m,n}表示从m到n次重复字符相匹配,m,n为大于等于0的整数。{m}和{m,}都是正确的,{ ,n}语法不错,但永远不能匹配

reg1 = new RegExp(/abc{2}/ig); //等价于“/abcc/ig”

reg2 = new RegExp(/abc{1,2}/ig); //等价于“/abc|abcc/ig”

reg3 = new RegExp(/abc{0,2}/ig); //等价于“/ab|abc|abcc/ig”

reg4 = new RegExp(/abc{0,}/ig); //匹配ab后面跟任意个c

reg5 = new RegExp(/abc{1,}/ig); //匹配ab后面跟一个以上的c注: 【{m,n}】不适用于[...]中

reg1 = new RegExp(/abc{2}/ig);

xx = "abcABCCabccc".match(reg1); //xx为: ABCC,abcc

reg3 = new RegExp(/abc{0,2}/ig);

yy = "abxABCCabccc".match(reg3); //yy为: ab,ABC,abcc

zz = "abA Ba bA b".match(/a {0,}b/ig); //匹配ab之间任意空格。zz为: ab,A B,a b,A b

ww = "aa1bb22cc321dd9876".match(/[0-9]{2}/g); //匹配2位数字。ww 为:22,32,98,76

//子表达式即字符串的一部分相匹配【(...)】说明: 对字符串的一部分进行操作,可以用()括起来

reg1 = new RegExp(/abc{2}/ig); //等价于“/abcc/ig”,c被重复了2遍

reg2 = new RegExp(/a(bc){2}/ig); //等价于“/a bcbc/ig”,bc被重复了2遍

reg1 = new RegExp(/abc{2}/ig);

xx = "abcABCbccc".match(reg1); //xx为: null

reg2 = new RegExp(/a(bc){2}/ig);

yy = "abcABCbccc".match(reg2); //yy为: ABCbc

相关文档
最新文档