码迷,mamicode.com
首页 > 编程语言 > 详细

javascript之正则表达式

时间:2014-12-27 11:26:11      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:javascript   正则表达式   regex   

创建正则表达式的两种方法

显式

new RegExp(“pattern”[,”flags”]);

var regex = new ("abc","gi");

第一个参数为要匹配的模式,第二个为标识信息,有三种标识信息:

g:全局标识,表示对文本中所有匹配的部分起作用,如不设置,则仅搜索和匹配第一个出现的文本段  global

i:忽略大小写标识   ignoreCase

m:多行标识,如不设置这标识,那么元字符“^”和“$”只与文本的开始位置和结尾位置相匹配,如果设置此标识,还可以与字符串中“\n”、“\r”后的位置,即下一行的行首和行尾进行匹配   multiLine

隐式

/pattern/[flags]  不用加引号

例 

var regex = /\w+/i;
var regex = new RegExp("\\w+","i");

以上两者是等价的,当用显式构造函数时,模式字符串中的特殊符号应该使用转义字符,即加上“\”前导符号

 

模式匹配符

\     指出后面的字符为特殊字符

^    匹配的字符必须在最前面

$    匹配的字符必须在最后面

*    匹配前面的字符0次或n次

+    至少1次

?  0或1次

.     匹配除换行符之外的所有单个字符

x|y        匹配x或y

(x)         标记子表达式的起止位置

{n}         匹配前面的n个字符

{n,}        匹配前面的至少n个字符

{n,m}    匹配前面的n到m个字符

[xyz]      匹配列出的任意字符

[^xyz]    匹配列出的任意字符的补集,即匹配列出字符之外的其他任意字符

[a-d]     匹配abcd当中的任意字符

[\b]       匹配一个空格

\b          匹配一个单词的分界线,比如一个空格

\B         匹配一个单词的非分界线

\d          匹配一个数字,等价于[0-9]

\D         匹配一个非数字

\f          匹配一个表单符

\n          匹配一个换行符

\r          匹配一个回车符

\s          匹配一个空单符,包括空格、Tab、feed、form、换行符,等价于 [\f\n\r\t\v]

\S          匹配一个制表符

\w         匹配所有的字母、数字及下划线,等价于[A-Za-z1-9_]

\W        匹配\w的补集

 

贪婪匹配与非贪婪匹配

正则表达式默认贪婪匹配,即使用最长匹配原则

例 要将“book”中匹配“bo?”的部分替换成“l”,替换结果为“lok”,而不是“look”

当“?”紧跟在任何其他限定符(*、+、?、{n}、{n,m})之后时,使用非贪婪模式

例 有字符串“booook”,“bo+?”只匹配“bo”部分,而“bo+”匹配“boooo”

选择匹配符

“|”的两个选项是两边尽可能最大的表达式

例 “abcd|efgh2”匹配的是“abcd”或“efgh”,而不是“abcd2”或“efgh2”,如要匹配“abcd2”或“efgh2”,应该创建“(abcd|efgh)2”

特殊字符

如果要匹配以下特殊字符的字面意思,需用“\”进行转义

^    $     *     +     ?     .      (      )      [      ]      {      }      |     \      /

正则表达式的静态属性

(1)index属性。是当前表达式模式首次匹配内容的开始位置,从0开始计数。其初始值为-1,每次成功匹配时,index属性都会随之改变。

(2)input属性。返回当前所作用的字符串,可以简写为$_,初始值为空字符串""。

(3)lastIndex属性。是当前表达式模式首次匹配内容中最后一个字符的下一个位置,从0开始计数,常被作为继续搜索时的起始位置,初始值为-1,表示从起始位置开始搜索,每次成功匹配时,lastIndex属性值都会随之改变。

(4)lastMatch属性。是当前表达式模式的最后一个匹配字符串,可以简写为$&。其初始值为空字符串""。在每次成功匹配时,lastMatch属性值都会随之改变。

(5)lastParen属性。如果表达式模式中有括起来的子匹配,是当前表达式模式中最后的子匹配所匹配到的子字符串,可以简写为$+。其初始值为空字符串""。每次成功匹配时,lastParen属性值都会随之改变。

(6)leftContext属性。是当前表达式模式最后一个匹配字符串左边的所有内容,可以简写为$`(其中“‘”为键盘上“Esc”下边的反单引号)。初始值为空字符串""。每次成功匹配时,其属性值都会随之改变。

(7)rightContext属性。是当前表达式模式最后一个匹配字符串右边的所有内容,可以简写为$‘。初始值为空字符串""。每次成功匹配时,其属性值都会随之改变。

(8)$1…$9属性。这些属性是只读的。如果表达式模式中有括起来的子匹配,$1…$9属性值分别是第1个到第9个子匹配所捕获到的内容。如果有超过9个以上的子匹配,$1…$9属性分别对应最后的9个子匹配。在一个表达式模式中,可以指定任意多个带括号的子匹配,但RegExp对象只能存储最后的9个子匹配的结果。在RegExp实例对象的一些方法所返回的结果数组中,可以获得所有圆括号内的子匹配结果。

实例属性

(1)global属性。返回创建RegExp对象实例时指定的global标志(g)的状态。如果创建RegExp对象实例时设置了g标志,该属性返回True,否则返回False,默认值为False。

(2)ignoreCase属性。返回创建RegExp对象实例时指定的ignoreCase标志(i)的状态。如果创建RegExp对象实例时设置了i标志,该属性返回True,否则返回False,默认值为False。

(3)multiLine属性。返回创建RegExp对象实例时指定的multiLine标志(m)的状态。如果创建RegExp对象实例时设置了m标志,该属性返回True,否则返回False,默认值为False。

(4)source属性。返回创建RegExp对象实例时指定的表达式文本字符串。

RegExp对象的方法

test方法

语法格式为test(str)。该方法检查一个字符串中是否存在创建RegExp对象实例时所指定的表达式模式,如果存在就返回True,否则返回False。如果找到匹配项,则会更新RegExp对象中的有关静态属性,以反映匹配情况。

exec方法

语法格式为exec(str)。该方法使用创建RegExp对象实例时所指定的表达式模式对一个字符串进行搜索,并返回一个包含搜索结果的数组。

如果为正则表达式设置了全局标志(g),可以通过多次调用exec和test方法在字符串中进行连续搜索,每次都是从RegExp对象的lastIndex属性值指定的位置开始搜索字符串。

如果没有设置全局标志(g),则exec和test方法忽略RegExp对象的lastIndex属性值,从字符串的起始位置开始搜索。

如果exec方法没有找到匹配,返回值为null;如果找到匹配,则返回一个数组,并更新RegExp对象中有关静态属性以反映匹配情况。返回数组中的元素0包含了完整的匹配结果,而元素1~n依次是表达式模式中定义的各个子匹配的结果。

exec方法返回的数组有3个属性,分别是input、index和lastIndex。

input属性是整个被搜索的字符串。

index属性是指匹配在整个被搜索字符串中的位置。

lastIndex属性是指匹配的子字符串的最后一个字符的下一个字符位置。

javascript之正则表达式

标签:javascript   正则表达式   regex   

原文地址:http://blog.csdn.net/u012152619/article/details/42191405

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!