JS不支持正则中的负向零宽断言

今天在项目中用到了正则表达式,并且需要用负向零宽断言 (?<=exp) 进行筛选,结果运行时报 Invalid group 错,一开始以为是自己很久没用表达式写错了,查阅了一下正则语法后发现并没有写错。

到网上一搜才发现,JS不支持负向的 (?<=exp) 和 (?<!exp),只支持正向的(?=exp) 和 (?!exp)。

时间: 2024-10-05 07:24:38

JS不支持正则中的负向零宽断言的相关文章

正则表达式 零宽断言 负向零宽断言 平衡组/递归匹配

零宽断言 用于查找在某些内容(但并不包括这些内容)之前或之后的东西,像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言. (?<=exp)myexp(?=exp1) 负向零宽断言 与零宽断言类似 (?<!exp)myexp(?!exp1) 自己用上面的例子测试下 (?<=<(\w+)>).*(?=<\/\1>) 平衡组/递归匹配 这个看起来有点复杂,其实就是 push/pop. 这里很像编程语言,或者说像个语法分析器

1.2.负向零宽断言

I'm singing while you are dancing. dancing ,sing a song.ing.singed a song.danced a long. time.danceabsd.cn 匹配上面文字中以danc开头,中间不包括ing,后面有字符d的单词 答案:\bdanc(?!ing)\w*?d\w*\b

js正则之零宽断言

我们学到的正则表达式匹配,都是有“宽度”的,使用 \w+. 匹配下面文本,会将 . 一同匹配: regular. expression. 如果不想匹配符号,只匹配一个位置,就要用到“零宽断言”(匹配宽度为零,满足一定的 条件/断言),零宽断言使用 (?=表达式) 的语法,例如 \w+(?=.),其中 (?=.) 表示 . 前面的位置(先行断言) regular. expression. 如果需要匹配后面的位置,如: .regular .expression 则要用到后发断言 (?<=.) ,使用

Regex 正则零宽断言

http://baike.baidu.com/link?url=sLfovpZmIcS5Uz_tiidXoVtjl30Tu3wARMfhnEcbgEGzsb8g1z7dvtGNXTulu1KDodmiuTAP5ODr_R5D2myeeq 零宽断言 1_1.(?=exp)   零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp 1_2.(?<=exp) 零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp 负向零宽 2_1.(?!exp)零宽度负预测先行断言,断言此位

老男孩带你了解perl正则表达式中的零宽断言

老男孩IT教育小编为大家整理了perl正则表达式中的零宽断言的方法,希望能帮到大家 1.1 前言 本文只介绍perl语言正则表达式的零宽断言功能. 零宽断言实质:匹配文本里面的位置. 零宽断言叫zero-length assertions,也叫lookaround(这个更容易理解). 包括:lookahead(向前看,零宽度正预测先行断言),lookbehind(向后看,零宽度正回顾后发断言). 从左到右对文本进行匹配,判断是否符合exp表达式. 名字 表达式 如果子表达式成功则- positi

正则表达之零宽断言(零宽度正预测先行断言)

http://www.cnblogs.com/mu-mu/archive/2013/02/06/2893581.html 最近为了对html文件进行源码处理,需要进行正则查找并替换.于是借着这个机会把正则系统地学一下,虽然以前也用过正则,但每次都是临时学一下混过关的.在学习的过程中还是遇到不少问题的,特别是零宽断言(这里还要吐槽下,网上到处都是都复制粘贴的内容,遇到个问题查看了不少重复的东西,汗!!!),所以在这里把自己的理解写下来,方便以后查阅! 零宽度正预测先行断言是什么呢,看msdn上的官

Java正则零宽断言出现PatternSyntaxException异常

今天在写正则的时候发现Java正则使用零宽断言(?<!exp) 匹配前面不是exp的位置,报出了一个异常: Exception in thread "main" java.util.regex.PatternSyntaxException: Look-behind group does not have an obvious maximum length near index 26 (?<=<img[^>]*src="[^"]*")

实现一个支持正则匹配的Filter以及Spring管理Filter遇到的问题

相信很多人都会对Http的Filter的url-pattern不支持正则而烦恼吧.就比如,在web项目中Struts,当我们想要对所有的或者某一个Action进行过滤,而不过滤其他的Action,尤其是不想过滤静态资源,如果你的Struts配置了Action后缀可能会好一些,很可惜我的项目就没有设置后缀,所有没法使用url-pattern仅支持的几种规则,所以就自己实现了一个抽象类,用来支持可配置需过滤以及不需过滤的url规则,且支持正则,具体源码可见下方. import java.io.IOE

js字符串和正则表达式中的match、replace、exec等函数详解

正则并不是经常使用,而正则和字符串之间的函数关系又错综复杂,谁是谁的函数,又是怎么样的一种结果,往往我们是看一遍忘一遍,对此我是头疼不已,感觉自己是个笨蛋^_^. 为了以后不再查文档,特此把常用的函数和功能,简明扼要的罗列在此,以备日后查看: RegExp对象的函数常用的有2个 1.test函数 用法:RegExpObject.test(string) 返回:如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false. 描述:这个方法没有什么