创建RegExp对象

来源:互联网 发布:德力西插排怎么样知乎 编辑:程序博客网 时间:2024/06/01 07:57

一 RegExp对象介绍

每一条正则表达式模式对应一个RegExp实例,有两种方式可以创建RegExp对象的实例。下面分别对这两种方式进行介绍。
1 使用RegExp的显式构造函数。
语法:
new RegExp("pattern"[,"flags"]) //即 new RegExp(" 模式 "[," 标记 "])
2 使用RegExp的隐式构造函数,采用纯文本格式。
语法:
/pattern/[flags]
 
pattern部分为要使用的正则表达式模式文本,是必须的。
在第一种方式中,pattern部分以JavaScript字符串的形式存在,需要使用双引号或单引号括起来;
在第二种方式中,pattern部分嵌套在两个“/”之间,不能使用引号。
flags部分设置正则表达式的标志信息,是可选项。
如果设置flags部分,在第一种方式中,以字符串的形式存在;在第二种方式中,以文本的形式紧接在最后一个“/”字符之后。
flags可以是以下标志字符的组合。
  • g是全局标志。
如果设置了这个标志,对某个文本执行搜索和替换操作时,将对文本中所有匹配的部分起作用。
如果不设置这个标志,则仅搜索和替换最早匹配的内容。
  • i是忽略大小写标志。
如果设置了这个标志,进行匹配比较时,将忽略大小写。
  • m是多行标志。
如果不设置这个标志,那么元字符“^”只与整个被搜索字符串的开始位置相匹配,而元字符“$”只与被搜索字符串的结束位置相匹配。
如果设置了这个标志,“^”还可以与被搜索字符串中的“\n”或“\r”之后的位置(即下一行的行首)相匹配,而“$”还可以与被搜索字符串中的“\n”或“\r”之后的位置(即下一行的行尾)相匹配。
注意:文本格式中的参数不要使用引号标记,而构造器函数的参数则要使用引号标记。所以下面的表达式建立同样的正则表达式:
/ab+c/i
new RegExp("ab+c","i")
当使用构造函数的时候,必须使用正常的字符串避开规则(在字符串中加入前导字符\)是必须的。例如,下面的两条语句是等价的:
re = new RegExp("\\w +")
re = /\w+/
 
二 代码
<html><head><title>创建正则表达式 </title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><script language = "JavaScript">var myString="如何创建正则表达式";var myregex = new RegExp("创建");  // 创建正则表达式if (myregex.test(myString)){document.write("已创建正则表达式,并找到了指定的模式!");}else{ document.write("已创建正则表达式,但未找到匹配的模式。");}document.write("<BR>")<script language="javascript"> var re1 = new RegExp("\\d{2}"); var re2 = /\d{2}/; alert("re1="+re1+"\nre2="+re2);</script></script></head><body></body></html>
 
三 运行结果
已创建正则表达式,并找到了指定的模式!
re1=/\d{2}/ re2=/\d{2}/ 
 
四 运行说明
由于JavaScript字符串中的“\”是一个转义字符,因此,使用显式构造函数创建RegExp实例对象时,应将原始正则表达式中的“\”用“\\”替换。
由于正则表达式模式文本中的转义字符也是“\”,如果正则表达式中要匹配原义字符“\”,在正则表达式模式文本中要以“\\”来表示,当使用显式构造函数的方式创建RegExp实例对象的时候,就需要使用“\\\\”来表示原义字符“\”。例如:
var re = new RegExp("\\\\")
0 0
原创粉丝点击