论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Javascript教程
Tag:验证,特效,入门,实例,验证,表单,特效,正则表达式,跑马灯,document,函数,代码,getElementByID,菜单,图片,视频教程

Javascript正则表达式

文章类别:Javascript | 发表日期:2009-8-21 10:34:37

RegExp对象的语义和使用:

检查字符串匹配
获取字符串中的部分内容
在原字符串的基础上构建一个新的字符串(包括添加、删除和修改)

构建一个RegExp对象主要有两种方法:
使用literal,如/\w/g
使用构造函数,如 new RegExp(/\w/)

构建RegExp对象有以下几个注意点:
      1.literal常用来构建非runtime产生的静态的RegExp对象
      2.literal之后可以直接添加flag用来对匹配字符串的执行结果进行限制,常用flag包括g和i,分别用来表示全局匹配(global)和忽略大小写匹配(case-insensitive)
      3.RegExp构造函数的第一个参数提供该对象的pattern,如果pattern是一个RegExp literal,那么就不能提供第二个参数(即指定flag)。如果pattern是一个string,那么可以使用第二个参数
      4.RegExp构造函数常用于构建runtime产生的动态RegExp对象
      5.RegExp的pattern为string时所有literal中的”\”都必须写成”\\”,因为”\”在string中需要被转义
以上两种方法构建的都一个javascript对象,因此/\w/ == /\w/返回false

RegExp对象相关的功能:
      要检查字符串的匹配,可以使用 regExp.test(string) 方法,该方法检查string是否匹配regExp提供的pattern。还可以使用 string.search(regExp)方法,如果两者不匹配将会返回-1
      要获取字符串中的部分内容,可以使用 regExp.exec(string) 方法,也可以使用string.match(regExp)方法
      要在原有字符串上构建一个新的字符串,通常使用string.replace(searchValue, replaceValue)方法

RegExp对象中提供pattern的语义:
      RegExp可以定义多个Alternative用”|”分割,该运算的优先级最低,因此如果存在”|”,那么它首先把RegExp分割成几大部分,每个Alternative由多个term组成,term分为assertion(用于位置限定),atom(匹配的单元),带Quantifier(修饰符)的atom
      assertion分为”^”用于匹配字符串开头,在multiInput(即flag包含m时),也可以匹配一行的开头,”$”用于匹配字符串结尾,在multiInput(即flag包含m时),也可以匹配一行的结尾,”\b”用于匹配一个\w和\W间隔,注意它并不匹配任何字符串中的内容,而只是用来判断一个位置的匹配情况
      atom的情况比较复杂,我们首先来看atom的Quantifier,可以包含* + ? {n} {m,} {m,n},其中*表示atom可以有0次或以上的重复,+表示1次或以上的重复,?表示0或1次,{n}表示恰巧n次重复,{m,}表示m或以上的重复,{m,n}表示重复次数在m和n之间(包含m和n),在以上的Quantifier之后还可以跟一个?用来启动non-greedy模式,我将在后文中说明这种模式的意义。
      atom包含patternCharacter(普通字符,即在pattern中没有特殊语义的字符,匹配时将按照字面进行匹配)
“.” 匹配所有非line-terminator字符
      \AtomEscape 包含数字型 \1(用于引用之前的括号中的匹配成功的内容)。一些字符的引用\n \f \r \t \v \xNN \uXXXX \cX等。一些特殊含义的字符,如\d \D \s \S \w \W
      CharacterClass,包含[...]和[^...]两种形式。其中可以包含很多字符,如-、 \n等字符引用、\b、\d等特殊含义字符。注意如果”-”左右有字符,那么语义变为从某一字符到某一字符。如果”-”左或者右没有字符,那么”-”仅表示dash字符。
      (group),以上模式进行group就可以在group之后使用Quantifier修饰
      (?:group),仅作为group使用,而不会记录group匹配的内容从而不算在\1..\n中
      (?=group),要求匹配但不会在返回的匹配string中包含group匹配的内容
      (?!group),要求不匹配且不会在返回的匹配string中包含group匹配的内容

下面是RegExp的两个比较重要的运作模式:

匹配Alternative总是从左到右,如果遇到第一个匹配的就不再尝试之后的匹配,如:

/ab|abc/.exec("abc")以上字符串”abc”仅匹配pattern中的ab,而不会去匹配abc

匹配时总是一般不在Quantifier后添加?的都使用greedy模式,添加?后使用non-greedy模式,如:

/\w+bc/.exec("abcbcbc")匹配时\w+总是先尽可能多的匹配(即greedy模式),因此它会匹配”abcbcbc”,如果改为

/\w+?bc/.exec("abcbcbc")那么他会尽可能少的匹配(即non-greedy模式),因此仅匹配”abc”。

对于一般的解析字符串的要求,一般可以使用exec或match方法解析,如果字符串很大那么往往需要使用循环结构进行解析,配合while等语句,RegExp是很强大的。

上一篇:{教程}JavaScript保存HTML页面 人气:2257
下一篇:{教程}Javascript中的trim()函数 人气:2333
视频教程列表
文章教程搜索
 
Javascript推荐教程
Javascript热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058