- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
正则表达式及其作用.doc
正则表达式
精通Javascript动态网页编程
正则表达式在很多语言中都会用到,其内容几乎是独立于具体语言,因此,本章与其他章节联系不是很大。但这并不意味着正则表达式的用处不大。事实上,正则表达式有着非常广泛的应用。本章主要介绍正则表达式在JavaScript中的应用。
8.1? 正则表达式及其作用
正则表达式的英文是regular expression,意思是符合某种规则的表达式,可以将其理解为一种对文字进行模糊匹配的语言。正则表达式用一些特殊的符号(称为元字符)来代表具有某种特征(例如,某一字符必须是数字字符)的一组字符以及指定匹配的的次数,含有元字符的文本不再表示某一具体的文本内容,而是形成了一种文本模式,可以匹配符合该模式的所有文本串。
在程序语言中引入正则表达式,可以完成以下功能。
???? 测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码或一个身份证号码。这称为数据有效性验证。
???? 替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后全部将其删除,或替换为其他文字。
???? 根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。
8.2元字符“?”与“( )”
元字符是一些具有特殊意义的专用字符,可以用于各种匹配关系。为便于后面章节的讲述,这里介绍两个元字符。
??8.2.1 用?表示可选项
?表示紧靠其前的元素项是可选(可有可无)的。例如,abc?能匹配abc和ab。如果让?匹配多个字符,必须用圆括号将这些字符括起来,使之成为一个紧密结合的组合项。这样,后面的?就表示圆括号中的内容可有可无。例如,a(bc)?能匹配a和abc。
如果一个图书编号的格式或者是5个数字字符(如10101);或者是5个数字后面加上一个连字符(-),再加上4个数字组成的10位字符(如11111-1234)。那么,查找这种格式的图书编号时,就可以使用“\d{5}(-\d{4})?”作为匹配模式。
其中,\d表示匹配一个任意的数字字符,{5}表示紧靠其前的元素项连续重复5次,\d{5}表示匹配任意连续的5个数字,等效于\d\d\d\d\d。-\d{4}匹配的是一个连字符(-)后加上4个任意数字,(-\d{4})?表示连字符(-)及其后的4个数字可有可无。
8.2.2用( )表示子匹配
除了能将多个元素组合成一个组合项外,括起来的表达式部分还称为一个子匹配(也称子表达式)。即可以用圆括号在一个长的表达式中划分出子表达式。这样,除了可以得到整个正则表达式的匹配结果外,还可以得到每个子表达式所匹配的结果。子表达式匹配的内容按照从左到右的顺序存储在缓冲区,该过程称为捕获。
子匹配捕获的内容可在表达式中位于该括号之后的地方被反向引用,第一个圆括号(即第一个子匹配)捕获的内容用\1表示,第二个用\2表示,依此类推。
例如,要匹配两个相同的连续数字字符的正则表达式是(\d)\1;要匹配连续5个相同的数字字符的正则表达式为(\d)\1{4};要匹配1221、3553、6776等这样千位与个位相等、百位与十位相等的数字,可以使用的正则表达式为(\d)(\d)\2\1。
8.3?RegExp对象
JavaScript提供了一个RegExp对象来完成有关正则表达式的操作和功能,每一条正则表达式模式对应一个RegExp实例。有两种方式可以创建RegExp对象的实例。
????? 使用RegExp的显式构造函数,语法为:new RegExp(pattern[,flags])。
????? 使用RegExp的隐式构造函数,采用纯文本格式:/pattern/[flags]。
pattern部分为要使用的正则表达式模式文本,是必须的。在第一种方式中,pattern部分以JavaScript字符串的形式存在,需要使用双引号或单引号括起来;在第二种方式中,pattern部分嵌套在两个“/”之间,不能使用引号。
flags部分设置正则表达式的标志信息,是可选项。如果设置flags部分,在第一种方式中,以字符串的形式存在;在第二种方式中,以文本的形式紧接在最后一个“/”字符之后。flags可以是以下标志字符的组合。
????? g是全局标志。如果设置了这个标志,对某个文本执行搜索和替换操作时,将对文本中所有匹配的部分起作用。如果不设置这个标志,则仅搜索和替换最早匹配的内容。
????? i是忽略大小写标志。如果设置了这个标志,进行匹配比较时,将忽略大小写。
????? m是多行标志。如果不设置这个标志,那么元字符“^”只与整个被搜索字符串的开始位置相匹配,而元字符“$”只与被搜索字符串的结束位置相匹配。如果设置了这个标志,“^”还可以与被搜索字符串中的“\n”或“\r”之后的位置(即下一行的行首
文档评论(0)