正则表达式regular expression详述(二)

正则表达式详述(二)

以下这些不是正则表达式的新增对象请参阅对应的JavaScript对象的属性    $_属性    参考input    $*属性
    参考multiline    $&属性    参考lastMatch    $+属性    参考lastParen    $`属性
    参考leftContext    $'属性    参考rightContext     compile方法    在脚本运行期间编译正则表达式对象
    属于RegExp的方法     在JavaScript 1.2, NES 3.0以上版本提供     语法:
    regexp.compile(pattern[, flags])    以数:    regexp    正则表达式的名称,可以是变量名或文字串。
    pattern    正则表达式的定义文本。    flags     如果指定的话,可以是下面其中的一个:    "g": 匹配所有可能的字串
    "i": 忽略大小写    "gi": 匹配所有可能的字串及忽略大小写    描述:
    使用compile方法来编译一个正则表达式 created with the RegExp constructor function。这样
就强制正则表达式只编译一次,而不是每次遇到正则表达式的时候都编译一次。当你确认正则表达式能
保持不变的时候可使用compile 方法来编译它(在获得它的匹配模式后),这样就可以在脚本中重复多次使用它。
    你亦可以使用compile 方法来改变在运行期间改变正则表达式。例如,假如正则表达式发生变化,
你可以使用compile方法来重新编译该对象来提高使用效率。
    使用该方法将改变正则表达式的source, global和ignoreCasesource属性的值。    constructor
    指出建立对象原型的function。注意这个属性的值由函数本身提供,而不是一个字串包含RegExp的name.Property提供。
    在JavaScript 1.1, NES 2.0以上版本提供    ECMA版本ECMA-262    描述:参考Object.constructor.
    exec方法    在指定的字符串运行匹配搜索。返回一个结果数组。    是RegExp的方法
    在JavaScript 1.2, NES 3.0以上版本提供     语法:    regexp.exec([str])regexp([str])
    参数:    regexp,正则表达式的名称,可以是一个变量名或文字定义串。
    str,要匹配正则表达式的字符串,如果省略,将使用RegExp.input的值。
    描述:就如在语法描述中的一样,正则表达工的exec方法能够被直接调用(使用regexp.exec(str))或者间接调用(使用regexp(str))。
    假如你只是运行以找出是否匹配,可以使用String搜索方法。
    假如匹配成功,exec方法返回一个数组并且更新正则表达式对象属性的值和预先定义的正则表达式对象、RegExp。如果匹配失败,exec方法返回null。
    请看下例:    <SCRIPT LANGUAGE="JavaScript1.2">    //匹配一个b接着一个或多个d,再接着一个b
    //忽略大小写    myRe=/d(b+)(d)/ig;    myArray = myRe.exec("cdbBdbsbz");
    </SCRIPT>    下面是该脚本的返回值:对象 属性/Index 描述 例子
myArray

myArray的内容 ["dbBd", "bB", "d"]  
index
基于0的匹配index 1  
input
原始字符串  cdbBdbsbz  
[0]
最后匹配的字符  dbBd  
[1], ...[n]
用圆括号括住的匹配字符串,如果有的话。不限制括号的个数。  [1] = bB
[2] = d  
myRe
lastIndex
开始下次匹配操作的index值  5  
ignoreCase
指出"i"是否使用以忽略大小写  true  
global
指出是否使用"g"标记来进行匹配所有可能的字串  true  
source
定义模式的文本字符串  d(b+)(d)  
RegExp
lastMatch$&
最后匹配的字符  dbBd  
leftContext$Q
最新匹配前面的子串  c  
rightContext$'
最新匹配后面的子串  bsbz  
$1, ...$9
圆括号内的匹配子串,如果有的话。圆括号的个数不受限制,但RegExp只能保留最后9个  $1 = bB  
$2 = d  
lastParen  $+
最后一个加上圆括号的匹配子串,如果有的话  d

假如你的正则表达式使用了"g"标记,你可以多次使用exec 方法来连续匹配相同的串。当你这样做
的时候,新的匹配将从由正则表达式的lastIndex 属性值确定的子串中开始。例如,假定你使用下面的脚本:
    <SCRIPT LANGUAGE="JavaScript1.2">    myRe=/ab*/g;str = "abbcdefabh"
    myArray = myRe.exec(str);
    document.writeln("Found "+myArray[0]+". Next match starts at "+myRe.lastIndex)
    mySecondArray = myRe.exec(str);
    document.writeln("Found "+mySecondArray[0]+". Next match starts at "+myRe.lastIndex)
    </SCRIPT>    这个脚本显示如下结果:    Found abb. Next match starts at 3
    Found ab. Next match starts at 9    例子:
    在下面的例子中,用户输入一个名字,脚本根据输入执行匹配操作。接着检查数组看是否和其它用户的名字匹配。
    本脚本假定已注册的用户的姓已经存进了数组A中,或许从一个数据库中取得。    <HTML>
    <SCRIPT LANGUAGE="JavaScript1.2">    A = ["zhao","qian","sun","li","liang"]
    function lookup()     {     firstName = /w+/i();     if (!firstName)
       window.alert (RegExp.input + "非法输入");     else {       count=0;
       for (i=0;i    输入你的姓然后按回车键。
    <FORM><INPUT TYPE:"TEXT" NAME="FirstName" onChange="lookup(this);"></FORM>
    </HTML>    global属性    正则表达式中是否使用了"g"标记。    RegExp属性,只读
    在JavaScript 1.2, NES 3.0以上版本提供     描述:    global是一个个别正则表达式对象的属性
    如果使用了"g"标记,global的值为true;否则为 false。"g"标记指定正则表达式测试所有可能的匹配。
    你不能直接改变该属性的值,但可以调用compile方法来改变它。    ignoreCase    检查正则表达式是否使用了"i"标记
    RegExp属性,只读     在JavaScript 1.2, NES 3.0以上版本提供     描述:
    ignoreCase是个别正则表达式对象的一个属性。
    如果使用了"i"标记,则返回true,否则返回false。"i"标记指示在进行匹配的时候忽略大小写。
    你不能直接改变该属性的值,但可以通过调用compile方法来改变它    input     指出正则表达式要测试那个字串。$_是这个属性的另一个名字。
    RegExp的属性,静态     在JavaScript 1.2, NES 3.0以上版本提供
    描述:因为input是静态的,不是某个个别的正则表达式对象的属性。你也可以使用 RegExp.input来表示。
    如果没有给正则表达式的exec或test方法提供字符串,并且RegExp.input中有值,则使用它的值来调用该方法。
    脚本或浏览器能够预置input属性。如果被预置了值且调用exec或 test方法的时候没有提供字符串
则调用exec或test的时候使用input的值。input可以被浏览器以下面的方式设置:
    当text表单域处理句柄被调用的时候,input被设置为该text输入的字串。
    当textarea表单域处理句柄被调用的时候,input被设置为textarea域内输入的字串。注意multili
ne亦被设置成true从而能匹配多行文本。    当select表单域处理句柄被调用的时候,input被设置成selected text的值。
    当链接对象的处理句柄被调用的时候,input被设置成<A HREF=...>和</A>之间的字符串。
    事件理现句柄处理完毕后,input属性的值被清除。    lastIndex     可读/可写的一个整数属性,指出下一次匹配从哪里开始。
    RegExp的属性     在JavaScript 1.2, NES 3.0以上版本提供
    描述:lastIndex 是个别的正则表达式对象的属性。    这个属性只有当正则表达式的"g"标记被使用以进行全串匹配的时候才被设置。实行以下规则:
    如果lastIndex大小字符串的长度,regexp.test和regexp.exec失败,且lastIndex被设为0。
    如果lastIndex等于字串的长度且正则表达式匹配空字符串,则正则表达式从lastIndex的位置开始匹配。
    如果lastIndex等于字符串的长度且正则表达式不匹配空字符串,则正则表达式不匹配input,且lastIndex被置为0。
    否则,lastIndex被设置成最近一次匹配的下一点。    例如,按下面的顺序执行脚本:    re = /(hi)?/g   匹配空字符串
    re("hi")   返回["hi", "hi"],lastIndex置为2
    re("hi")   返回[""],一个空数组,它的下标为0的元素就是匹配字符串。在这种情况下,返回空
串是因为lastIndex等于2(且仍然是2),并且"hi"的长度也是2。     lastMatch     最后一次匹配字符串,$&是同样的意思。
    RegExp的属性,静态,只读    在JavaScript 1.2, NES 3.0以上版本提供
   描述:因为lastMatch是静态的,所以它不是个别指定正则表达式的属性。你也可以使用RegExp.lastMatch。    lastParen
    最后一次加上括号的匹配字符串,如果有的话。$+是同样的意思。    RegExp属性,静态,只读
    在JavaScript 1.2, NES 3.0以上版本提供
    描述:因为lastParen是静态的,它不是某个个别正则式的属性,你可以使用RegExp.lastParen 表达同样的意思。
    leftContext    最近一次匹配前面的子串,$`具有相同的意思。    RegExp的属性,静态,只读
    在JavaScript 1.2, NES 3.0以上版本提供
    描述:因为leftContext是静态的,不是某一个正则表达式的属性,所以可以使用RegExp.leftContext来表达想同的意思。
    multiline    反映是否匹配多行文本,$*是相同的意思。    RegExp的属性,静态
    在JavaScript 1.2, NES 3.0以上版本提供
    描述:因为multiline是静态的,而不是某个个别正则表达式的属性,所以能够用RegExp.multiline表达相同的意思。
    如果允许匹配多行文本,则multiline为true,如果搜索必须在换行时停止,则为false。
    脚本或浏览器能够设置multiline属性。当一个textarea的事件处理句柄被调用的时候,multiline
被置为true。在事件处理句柄处理完毕后,multiline属性值被清除。也就是说,如果你设置了multili
ne为true,则执行任何的事件处理句柄后,multiline被置为false。    prototype
    描绘类的原型。你可以根据要求使用prototype来增加类的属性或方法。为了获得prototypes 的资
料,请参阅RegExp的Function.prototype.Property属性。    从JavaScript 1.1, NES 2.0版本开始提供
    ECMA版本ECMA-262    rightContext     最后一次匹配的右边的字符串,$'是同样的效果。
    RegExp的属性,静态,只读    从 JavaScript 1.2, NES 3.0以上版本开始提供
    描述:因为rightContext是静态的,不是某个个别正则表达工的属性,可以使用RegExp.rightContext来达到相同的效果。
    source     一个只读属性,包含正则表达式定义的模式,不包侨forward slashes和"g"或"i"标记。    RegExp的属性,只读
    从JavaScript 1.2, NES 3.0以上版本开始提供
    描述:source是个别正则表达式对象的属性,你不能直接改变它的值,但可以通过调用compile 方法来改变它。    test
    执行指定字符串的正则表达式匹配搜索,返回true或false。    RegExp的方法
    从JavaScript 1.2, NES 3.0以上版本开始提供     语法:regexp.test([str])
    参数:regexp,正则表达式的名称,可以是变量名或正则表达式定义文字串
          str,要匹配的字符串,如果省略,将使用RegExp.input的值为作参数
    描述:当你需要知道一个字符串能否匹配某个正则表达工,可以使用test方法(与String.search方
法类似); 为了获得更多的信息(但速度将变慢),可以使用exec方法(与String.match方法类似)。    例子:下面的例子显示test是否成功的提示:
    function testinput(re, str){
      if (re.test(str))  midstring = " contains ";
      else midstring = " does not contain ";
      document.write (str + midstring + re.source);   }    toSource
    返回一个字符串象征对象的源码    RegExp的方法    从JavaScript 1.3以上版本开始提供     语法:toSource()
    参数:没有    描述:toSource方法返回下述的值:    对于内置的RegExp对象,toSource返回下面的字符象征源码不可用:
    function Boolean(){      [native code] }
    在RegExp场合中, toSource返回象征源码的字符串,通常这个方法是由JavaScript内部自动调用而不是不代码中显式调用。
    更多请看Object.toSource    toString     返回描绘指定对象的字符串。    RegExp的方法
    从JavaScript 1.1, NES 2.0开始提供    ECMA版本ECMA-262    语法:toString()    参数:无
    描述:RegExp对象不考虑Object对象的toString方法;它不继承Object.toString,对于RegExp 对
象,toString方法返回一个代表该对象的字符串。    例如:下面的例子显示象征RegExp对象的字符串
    myExp = new RegExp("a+b+c");    alert(myExp.toString())
    displays "/a+b+c/"    更多请看:Object.toString    valueOf     返回一个RegExp对象的原始值
    RegExp的方法    从JavaScript 1.1版本开始提供    ECMA版本:ECMA-262     语法:valueOf()
    参数:无    描述:RegExp的valueOf方法以字符串形式返回RegExp对象的原始值,这个值与RegExp.toString相等。
    该方法通常由JavaScript内部自动调用而不是显式调用    例子:    myExp = new RegExp("a+b+c");
    alert(myExp.valueOf())    displays "/a+b+c/"

(0)

相关推荐

  • 正则表达式Regular Expression (RegExp)详解

    正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE). 正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本. 一.字符类 1.字符类:可以匹配他所包含的任意字符 eg:/[abc]/和字母"a"."b"."c"中的任意一个匹配 2.否定字符类:

  • 正则表达式基础教程 regular expression第1/2页

    前言 正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感.只要认真去阅读这些资料,加上应用的时候进行一定的参考,掌握正则表达式不是问题. 1. 引子  目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子. 正则表达式的使用,可以通过简单的办法来实现强大的功能.为了简单有效而又不失强大,造成了正则表达式代码的难度较大,学习

  • 浅谈正则表达式(Regular Expression)

    一.什么是正则表达式? 简单的说:正则表达式(Regular Expression)是一种处理字符串匹配的语言: 正则表达式描述了一种字符串匹配的模式,可以用来检查一个字符串是否含有某种子串,对匹配到的子串进行"取出"或"替换"操作. 二.正则表达式的应用 正则表达式在实际的开发过程中非常实用,能够快速解决一些复杂的字符串处理问题,下面我对正则表达式的应用做一些简单分类: 第一种:数据验证 比如,你要验证一个字符串是否是正确的EMail,Telphone,Ip等等,

  • python re正则表达式模块(Regular Expression)

    模块的的作用主要是用于字符串和文本处理,查找,搜索,替换等 复习一下基本的正则表达式吧 .:匹配除了换行符以为的任意单个字符 *:匹配任意字符,一个,零个,多个都能匹配得到 俗称贪婪模式 +:匹配位于+之前的一个或者多个字符 |:匹配位于|之前或者之后的字符 ^:匹配行首 $:匹配行尾 ?:匹配位于?之前的零个或者一个字符,不匹配多个字符 \:表示 \ 之后的为转义字符 []:匹配[]之中的任意单个字符,[0-9]表示匹配0到9任意一个数字 ():将位于()之内的的内容当作一个整体 {}:按{}

  • 正则表达式regular expression详述(一)

    正则表达式是regular expression,看来英文比中文要好理解多了,就是检查表达式符不符合规定!!正则表达式有一个功能十分强大而又十分复杂的对象RegExp,在JavaScript1.2 版本以上提供.    下面我们看看有关正则表达式的介绍:    正则表达式对象用来规范一个规范的表达式(也就是表达式符不符合特定的要求,比如是不是Email地址格式等),它具有用来检查给出的字符串是否符合规则的属性和方法.    除此之外,你用RegExp构造器建立的个别正则表达式对象的属性,就已经预

  • 正则表达式regular expression详述(二)

    正则表达式详述(二) 以下这些不是正则表达式的新增对象请参阅对应的JavaScript对象的属性    $_属性    参考input    $*属性    参考multiline    $&属性    参考lastMatch    $+属性    参考lastParen    $`属性    参考leftContext    $'属性    参考rightContext     compile方法    在脚本运行期间编译正则表达式对象    属于RegExp的方法     在JavaScri

  • php正则表达式(regar expression)

    引言: 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串 的需要.正则表达式就是用于描述这些规则的语法. 例:在判断用户邮件地址格式.手机号码格式或者采集别人网页内容时. php也常常用到正则表达式 php有两个常用的正则表达式函数:preg_match和ereg. 我今天刚看了preg_match.它的具体写法是preg_match(mode,string subject,array matches): 以下是我写的一个example. 复制代码 代码如下: <?php $

  • PHP和正则表达式教程集合之二第1/2页

    正则表达式快速入门(二) [导读]在本文里,我们主要介绍子模式(subpatterns),逆向引用(Back references)和量词(quantifiers) 在上篇文章里,我们介绍了正则表达式的模式修正符与元字符,细心的读者也许会发现,这部分介绍的非常简略,而且很少有实际的例子的讲解.这主要是因为网上现有的正则表达式资料都对这部分都有详细的介绍和众多的例子,如果觉得对前一部分缺乏了解可以参看这些资料.本文希望可以尽可能多涉及一些较高级的正则表达式特性. 在本文里,我们主要介绍子模式(su

  • python使用正则表达式(Regular Expression)方法超详细

    一.导入re库 python使用正则表达式要导入re库. import re 在re库中.正则表达式通常被用来检索查找.替换那些符合某个模式(规则)的文本. 二.使用正则表达式步骤 1.寻找规律: 2.使用正则符号表示规律: 3.提取信息,如果每一个字符都能匹配,则匹配成功:一旦有匹配不成功的字符则匹配失败. 三.正则表达式中常见的基本符号 1.点号"." 一个点号可以代替除了换行符(\n)以外的任何一个字符,包括但不限于英文字母.数字.汉字.英文标点符号和中文标点符号. 2.星号&q

  • 正则表达式详述 二

    下面的提供了在正则表达式中能够使用的完整对特殊字符的一个完整的列表和描述. 表1.3:正则表达式中的特殊字符: 字符\ 意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,\不作解释. 例如:/b/匹配字符'b',通过在b 前面加一个反斜杠\,也就是/\b/,则该字符变成特殊字符,表示匹配一个单词的分界线. 或者:  对于几个字符,通常说明是特殊的,指出紧接着的字符不是特殊的,而应该按字面解释. 例如:*是一个特殊字符,匹配任意个字符(包括0个字符):例如:/a*/意味匹配0个或多个a

  • 共享日常收集JS正则表达式(JavaScript regular expression)

    RegExp直接量和对象的创建 就像字符串和数字一样,程序中每个取值相同的原始类型直接量均表示相同的值,这是显而易见的.程序运行时每次遇到对象直接量(初始化表达式)诸如{}和[]的时候都会创建新对象.比如,如果在循环体中写var a = [],则每次遍历都会创建一个新的空数组.正则表达式直接量则与此不同,ECMAScript 3规范规定,一个正则表达式直接量会在执行到它时转换为一个RegExp对象,同一段代码所表示正则表达式直接量的每次运算都返回同一个对象.ECMAScript 5规范则做了相反

随机推荐