AS3 js正则表达式 反向引用(backreference)

as3代码:

var str = "";
var reg = /(\d{}) \/gx;
// \ 即为反向分组,代表前一个分组相同的匹配结果字符。如\d{} 匹配了,那么\也只能为匹配,
var first=str.match(reg);
//match(),返回一个对象,如果reg有全局属性g,对象的数字索引为各完全匹配字符,
//如果无全局属性g,索引为第一次完全匹配字符,其他索引依次为各分组匹配字符
for(var key in first)
{
trace("第一次属性名:"+key +",值:"+ first[key])
}
/*
输出
第一次属性名:,值:
第一次属性名:,值:
*/

js代码

<script language="javascript">
var str = "";
var reg = /(\d{}) \/gx;
// \ 即为反向分组,代表前一个分组相同的匹配结果字符。如\d{} 匹配了,那么\也只能为匹配,
var first=str.match(reg);
//match(),返回一个对象,如果reg有全局属性g,对象的数字索引为各完全匹配字符,
//如果无全局属性g,索引为第一次完全匹配字符,其他索引依次为各分组匹配字符
for(var key in first)
{
document.write("第一次属性名:"+key +",值:"+ first[key])
}
</script>
<!--
输出 .
第一次属性名:,值:
第一次属性名:,值:
--> 

更复杂一些的反向引用:

下面是一个简单的关键字搜索高亮显示的正则表达用法。。

AS3

var str = "";
var reg = /(\d{}) \/gx;
var first=str.replace(reg,"<font color=red>$$</font>");
//输出 <font color=red>$</font><font color=red>$</font>。
//replace()作用是把匹配字符串替换成相应字段。
//注意$反向代表reg第一个括号内的分组\d{},而$直接被显示了,表示正则表达式只认括号为分组,不把/识别为第二个分组
trace (first); 

JS

<script language="javascript">
var str = "";
var reg = /(\d{}) \/gx;
var first=str.replace(reg,"<font color=red>$$</font>");
//输出 <font color=red>$</font><font color=red>$</font>。
//replace()作用是把匹配字符串替换成相应字段。
//注意$反向代表reg第一个括号内的分组\d{},而$直接被显示了,表示正则表达式只认括号为分组,不把/识别为第二个分组
document.write(first);
</script> 

以上内容是小编给大家介绍的AS3 js正则表达式 反向引用(backreference) ,希望对大家有所帮助!

(0)

相关推荐

  • php正则表达式的模式修正符和逆向引用使用介绍

    正则表达式的匹配先后顺序: 1.模式单元 2.重复匹配 ? * + {} 3.边界限定 ^ $ b B 4.模式选择 | 模式修正符: 模式修正符是标记在整个模式之外的. i :模式中的字符将同时匹配大小写字母. m :字符串视为多行. s :将字符串视为单行,换行符作为普通字符. x :将模式中的空白忽略. A :强制仅从目标字符串的开头开始匹配. D :模式中的美元元字符仅匹配目标字符串的结尾. U :匹配最近的字符串. PHP与正则表达式中的模式修正符 下面列出了当前在 PCRE 中可能使

  • 正则中的回溯定义与用法分析【JS与java实现】

    本文实例分析了正则中的回溯定义与用法.分享给大家供大家参考,具体如下: 关于"回溯"我也是第一次接触,对它也不算很了解.下面就把我所了解的做为一个心德记录下来,以备查看. 我们所使用的正则表达式的匹配基础大概分为:优先选择最左端(最靠开头)的匹配结果和标准的匹配量词(*.+.?和{m, n})是匹配优先的. "优先选择最左端的匹配"顾名思义就是从字符串的起始位置开始匹配直到匹配结束这是基础:"标准匹配量词"又分为"非确定型有穷自动机(N

  • VBS教程:正则表达式简介 -后向引用

    后向引用正则表达式一个最重要的特性就是将匹配成功的模式的某部分进行存储供以后使用这一能力.请回想一下,对一个正则表达式模式或部分模式两边添加圆括号将导致这部分表达式存储到一个临时缓冲区中.可以使用非捕获元字符 '?:', '?=', or '?!' 来忽略对这部分正则表达式的保存. 所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容存储.存储子匹配的缓冲区编号从 1 开始,连续编号直至最大 99 个子表达式.每个缓冲区都可以使用 '\n' 访问,其中 n 为一个标识特定缓冲区的一位或

  • PHP正则表达式的效率 回溯与固化分组

    先来看下问题. 字符串 复制代码 代码如下: $str = '<script>123456</script>'; 正则表达式为 复制代码 代码如下: $strRegex1 = '%<script>.+<\/script>%'; $strRegex2 = '%<script>.+?<\/script>%'; $strRegex3 = '%<script>(?:(?!<\/script>).)+<\/scri

  • 小议正则表达式效率 贪婪、非贪婪与回溯

    先扫盲一下什么是正则表达式的贪婪,什么是非贪婪?或者说什么是匹配优先量词,什么是忽略优先量词? 好吧,我也不知道概念是什么,来举个例子吧. 某同学想过滤之间的内容,那是这么写正则以及程序的. 复制代码 代码如下: $str = preg_replace('%<script>.+?</script>%i','',$str);//非贪婪 看起来,好像没什么问题,其实则不然.若 复制代码 代码如下: $str = '<script<script>alert(docume

  • 深度分析正则(pcre)最大回溯/递归限制

    今天,Tank问了一个问题, 对于如下的正则: 复制代码 代码如下: /<script>.*?<\/script>/i 当要匹配的字符串长度大于100014的时候, 就不会得出正确结果: 复制代码 代码如下: $reg = "/<script>.*?<\/script>/is"; $str = "<script>********</script>"; //长度大于100014 $ret = pr

  • 编写高质量的js之正确理解正则表达式回溯

    当一个正则表达式扫描目标字符串时,从左到右逐个扫描正则表达式的组成部分,在每个位置上测试能不能找到一个匹配.对于每一个量词和分支,都必须确定如何继续进行.如果是一个量词(如*.+?或者{2,}),那么正则表达式必须确定何时尝试匹配更多的字符:如果遇到分支(通过|操作符),那么正则表达式必须从这些选项中选择一个进行尝试. 当正则表达式做出这样的决定时,如果有必要,它会记住另一个选项,以备返回后使用.如果所选方案匹配成功,正则表达式将继续扫描正则表达式模板,如果其余部分匹配也成功了,那么匹配就结束了

  • PHP正则表达式的逆向引用与子模式分析

    正则表达式一个最重要的特性就是将匹配成功的模式的某部分进行存储供以后使用这一能力. 对一个正则表达式模式或部分模式两边添加圆括号()可以把这部分表达式存储到一个临时缓冲区中. 所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容按顺序存储. 存储子匹配的缓冲区编号从1开始,连续编号至最大99个子表达式. 每个缓冲区都可以使用'\n'(或用'$n')访问,其中n为1至99的阿拉伯数字,用来按顺序标识特定缓冲区(子表达式). 例1:最简单最有用的例子是确定文字中连续出现两个相同单词的位置

  • JavaScript正则表达式之后向引用实例代码

    function isIP(strIP) { if (strIP=="") return false; var re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/g //匹配IP地址的正 则表达式 if(re.test(strIP)) { if( RegExp.$1 function RegExpTest(){ var src = ""; var re = /]*)>/g; var arr,msg=""; while ((a

  • 正则表达式学习教程之回溯引用backreference详解

    本文实例讲述了正则表达式回溯引用backreference.分享给大家供大家参考,具体如下: 在所有例子中正则表达式匹配结果包含在源文本中的[和]之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法,会在相应的地方说明.所有java例子都在JDK1.6.0_13下测试通过. 一.问题引入 一个在HTML页面中匹配标题标签(H1-H6)的问题: 文本: <body> <h1>Welcome to my page</H1> Content is divid

  • 详解JavaScript正则表达式之分组匹配及反向引用

    语法 元字符:(pattern) 作用:用于反复匹配的分组 属性$1~$9 如果它(们)存在,用于得到对应分组中匹配到的子串 \1或$1 用于匹配第一个分组中的内容 \2或$2 用于匹配第一个分组中的内容 ... \9或$9 用于匹配第一个分组中的内容 用法示例 var reg = /(A+)((B|C|D)+)(E+)/gi;//该正则表达式有4个分组 //对应关系 //RegExp.$1 <-> (A+) //RegExp.$2 <-> ((B|C|D)+) //RegExp.

  • 正则表达式之回溯

    关于"回溯"我也是第一次接触,对它也不算很了解.下面就把我所了解的做为一个心德记录下来,以备查看. 我们所使用的正则表达式的匹配基础大概分为:优先选择最左端(最靠开头)的匹配结果和标准的匹配量词(*.+.?和{m, n})是匹配优先的. "优先选择最左端的匹配"顾名思义就是从字符串的起始位置开始匹配直到匹配结束这是基础:"标准匹配量词"又分为"非确定型有穷自动机(NFA)"也可以叫做"表达式主导":另外一种

  • PHP 正则表达式效率 贪婪、非贪婪与回溯分析(推荐)

    先扫盲一下什么是正则表达式的贪婪,什么是非贪婪?或者说什么是匹配优先量词,什么是忽略优先量词? 好吧,我也不知道概念是什么,来举个例子吧. 某同学想过滤之间的内容,那是这么写正则以及程序的. $str = preg_replace('%<script>.+?</script>%i','',$str);//非贪婪 看起来,好像没什么问题,其实则不然.若 $str = '<script<script>alert(document.cookie)</script&

随机推荐