关于正则表达式的求解 有一段html代码 "内容1-->内容2-->内容3" (“-->”为分隔标志)那么正则表达式怎样写才可以获取“-->内容3”我这样写了: re = new RegExp("-->(.|\\n)*内容3","g")可是获取到的是“-->内容2-->内容3” 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 补充,我是用match: aa="内容1-->内容2-->内容3" re = new RegExp("-->(.|\\n)*内容3","g") document.write (aa.match(re)) var aa="内容1-->内容2-->内容3" re = new RegExp("-->内容3","g") alert(aa.match(re)) 用ASP如下:dim refStr,rrefStr="内容1-->内容2-->内容3"r=split(refStr,"-->")response.write "The last one is : " & r(ubound(r)) 晕哦,不是我想要的。可能我的表达有误,更正如下:有一段html代码 " *<!--a-->*<!--b-->*<!--3--> " (“*”为不包含“-->”任何字符组合,“-->”为分隔标志,a,b 都是动态的数字)那么正则表达式怎样写才可以获取“*<!--3-->”我这样写了: aa=*<!--a-->*<!--b-->*<!--3--> re = new RegExp("-->(.|\\n)*<!--3-->","g") document.write (aa.match(re))可是获取到的是“-->*<!--b-->*<!--3-->” 很无聊的做法var aa="*<!--f-->*<!--h-->*<!--m-->*<!--a-->*<!--b-->*<!--3-->"; re = /-->(.|\\n)+<!--3-->/g; var index=-1; while(aa.search(re)!=-1){ index=aa.search(re); aa=aa.substr(index+3); } alert(aa); aa="sadfsaf<!--a-->sdfsadf<!--b-->aaaaaaaaaaaa<!--3-->"; alert(aa.match(/-->((?:(?!-->).)+?)<!--3-->/g)); 呵呵,楼上好劲,就是我所要的,可惜不大明白,哎,?:(?!-->). 这里搞晕人,看了语法解释还是不明白。(?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。 (?!pattern) 负向预查,在任何不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始 这样的解释,不明不白。楼上的楼上,确实也是个方法,谢谢 晕,看了这帖才明白楼主的需求,JavaScript中是不支持反向预搜索或者叫逆序环视这种语法的(?<=expression)(?<!expression)<textarea id="result" rows="10" cols="100"></textarea><script type="text/javascript"> var aa="*<!--a-->*<!--b-->*<!--3-->*<!--c-->*<!--d-->*<!--e-->*<!--3-->*<!--f-->"; var re = /(?:^|-->)((?:(?!-->).)*<!--3-->)/g; var result; while ((result = re.exec(aa)) != null) { document.getElementById("result").value += result[1] + "\n"; }</script>关于环视,可以看下我的博客环视(Lookaround) 【大牛来帮忙看看如何实现这种效果】 js移除object对象时报错 javascript位运算的问题 javascript 操作xml问题 如何实现表单的自动提交? 怎么替换? 简单问题:在网页中如何隐藏鼠标?谢谢了! 如果一个单元格的id=p,那么怎样用js控制其中字符的颜色? 给大家一个小电影,算是新年礼物! 求一个树形菜单,数据超过2000 ,高分奉献。 alert(Date().toLocaleDateString())为何报错呢? 使用formvalidator和ajaxfileupload的一点问题
re = new RegExp("-->(.|\\n)*内容3","g")
document.write (aa.match(re))
re = new RegExp("-->内容3","g")
alert(aa.match(re))
refStr="内容1-->内容2-->内容3"
r=split(refStr,"-->")
response.write "The last one is : " & r(ubound(r))
晕哦,不是我想要的。可能我的表达有误,更正如下:有一段html代码 " *<!--a-->*<!--b-->*<!--3--> " (“*”为不包含“-->”任何字符组合,“-->”为分隔标志,a,b 都是动态的数字)
那么正则表达式怎样写才可以获取“*<!--3-->”我这样写了:
aa=*<!--a-->*<!--b-->*<!--3-->
re = new RegExp("-->(.|\\n)*<!--3-->","g")
document.write (aa.match(re))可是获取到的是“-->*<!--b-->*<!--3-->”
re = /-->(.|\\n)+<!--3-->/g;
var index=-1;
while(aa.search(re)!=-1){
index=aa.search(re);
aa=aa.substr(index+3);
}
alert(aa);
alert(aa.match(/-->((?:(?!-->).)+?)<!--3-->/g));
楼上的楼上,确实也是个方法,谢谢
晕,看了这帖才明白楼主的需求,JavaScript中是不支持反向预搜索或者叫逆序环视这种语法的
(?<=expression)
(?<!expression)<textarea id="result" rows="10" cols="100"></textarea>
<script type="text/javascript">
var aa="*<!--a-->*<!--b-->*<!--3-->*<!--c-->*<!--d-->*<!--e-->*<!--3-->*<!--f-->";
var re = /(?:^|-->)((?:(?!-->).)*<!--3-->)/g;
var result;
while ((result = re.exec(aa)) != null)
{
document.getElementById("result").value += result[1] + "\n";
}
</script>关于环视,可以看下我的博客
环视(Lookaround)