正则表达式简介

(整期优先)网络出版时间:2019-10-20
/ 2

正则表达式简介

庞新法

陕西省委党校文化与科技教研部陕西西安710061

摘要:本文简述了正则表达式的定义,使用,语法规则,为网页系统的开发及应用奠定一定的基础。

关键词:正则表达式匹配查找

一、正则表达式简介

正则表达式(RegularExpression,简称regexp)。是一种描述字符串结构的语法规则。对用户名和密码进行验证。用户名、密码、电子邮箱、手机号码、身份证号码、生日、邮政编码、固定电话,这些特殊字符串的验证在网页注册或者登陆时常会用到。利用正则表达式可以化简验证。正则表达式描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串,将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

本文以查找为例,若在大量的文本中找出符合某个特征的字符串(如手机号码),就将这个特征按照正则表达式的语法写出来,形成一个计算机程序识别的模式(Pattern),然后计算机程序就会根据这个模式到文本中进行匹配,找出符合规则的字符串。

二、定义正则表达式

1.普通方式varreg=/表达式/附加参数

表达式:一个字符串代表了某种规则,可以使用特殊符号代表特殊的规则。

字符类别

附加参数:用来扩展表达式的含义

字符类别

g:全局匹配;i:不区分大小写匹配;m:多行匹配。

2.构造函数方式varreg=newRegExp(“表达式”,“附加参数”)

例子:varreg=/special/;varreg=/special/g;varreg=newRegExp(“special”);varreg=newRegExp(“special”,“g”);

知识点2:正则表达式的两种模式

(1)简单模式。varreg=/china/;varreg=/abc8/。

(2)复合模式。varreg1=/^\w+$/;varreg2=/^\w+@\w+.[a-zA-Z]{2,3}(.[a-zA-Z]{2,3})?$/。reg1表示一个数字、下划线或字母字符出现一次或多次。reg2表示一个电子邮箱的有效格式。

三、如何使用正则

在开发中,经常需要根据正则匹配模式完成对指定字符串的搜索和匹配。最常用的test、exec、match、search、replace、split6个方法

1.test检查指定的字符串是否存在。vardata=”123123”;varreCat=/123/gi;alert(reCat.test(data));//true

检查字符是否存在,g表示全局匹配,i表示不区分大小写。

2.exec返回查询值。exec()方法用于在目标字符串中搜索匹配,一次仅返回一个匹配结果。例如:在指定字符串str中搜索abc.varstr=’AbC123abc456’;varreg=/abc/i;//定义正则对象。reg.exec(str);//匹配结果:[“AbC”,index:0,input:”AbC123abc456”]。String对象中的match()方法除了可在字符串内检索指定的值外,还可以在目标字符串中根据正则匹配出所有符合要求的内容,匹配成功后将其保存到数组中,匹配失败则返回false。

vardata=”123123,213,12312,312,3,Cat,cat,dsfsdfs,”;varreCat=/cat/i;alert(reCat.exec(data));//Cat

3.match得到查询数组。vardata=”123123,213,12312,312,3,Cat,cat,dsfsdfs,”;varreCat=/cat/gi;vararrMactches=data.match(reCat)

for(vari=0;i<arrMactches.length;i++)

{alert(arrMactches[i])//Catcat}

varstr=”It’sistheshorthandofitis”;varreg1=/it/gi;str.match(reg1);//匹配结果:(2)[“It”,”it”]

varreg2=/^it/gi;str.match(reg2);//匹配结果:[“It”]

varreg3=/s/gi;str.match(reg3);//匹配结果:(4)[“s”,“s”,”s”,”s”]

varreg4=/s$/gi;str.match(reg4);//匹配结果:[“s”]

4.search返回搜索位置类似于indexof。vardata=”123123,213,12312,312,3,Cat,cat,dsfsdfs,”;varreCat=/cat/gi;alert(data.search(reCat));//23

5.replace替换字符,利用正则替换。vardata=”123123,213,12312,312,3,Cat,cat,dsfsdfs,”;varreCat=/cat/gi;alert(data.replace(reCat,”libinqq”));

6.split利用正则分割数组。vardata=”Mery,Tom,Kitty”;varreCat=/,/;vararrdata=data.split(reCat);for(vari=0;i<arrdata.length;i++)

{alert(arrdata[i]);}

结果是MeryTomKitty。

参考文献

[1]张晓雷网页设计与制作教程[M].北京,电子工业出版社,2014。

[2]缪亮网页设计基础与上机指导[M].北京,清华大学出版社,2012。

[3]王津涛网页设计与开发[M].北京,清华大学出版社,2012。