社区
JavaScript
帖子详情
这个正则表达式怎么解?
womakelovewithnima
2010-11-18 05:38:08
/<tpl\b[^>]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\tpl>/
用得是MATCH 方法,返回结果应该包括<tpl></tpl>这对标签吧,但是没包括这对标签的也返回了!
...全文
97
9
打赏
收藏
这个正则表达式怎么解?
/]*>((?:(?=([^<]+))\2|]*>))*?)/ 用得是MATCH 方法,返回结果应该包括这对标签吧,但是没包括这对标签的也返回了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
兔子-顾问
2010-11-18
打赏
举报
回复
修改一下。
var reg = /<tpl\s[^>]*>[\s\S]*?<\/tpl>/g;
兔子-顾问
2010-11-18
打赏
举报
回复
写的比较乱。滥用环视。
<tpl></tpl>之间的很简单
var reg = /<tpl>[\s\S]*?<\/tpl>/g;
Mr-Jee
2010-11-18
打赏
举报
回复
嗯 是这样的
m[0]是你匹配的内容
m[1]是第一个子模式
m[2]是第二个子模式
womakelovewithnima
2010-11-18
打赏
举报
回复
是我在调试gridpanel时出现的,那段HTML代码不记得了。
while((m = s.match(re)))
调试到这里的时候,m的第一个值就是s,第二个值是s中去掉了这对标签<tpl></tpl>中的内容,第三个值是'/tpl>',太奇怪了,不知道是怎么匹配的?
Mr-Jee
2010-11-18
打赏
举报
回复
能够把不是tpl的而没有被匹配的发给我看看吗
womakelovewithnima
2010-11-18
打赏
举报
回复
源代码在这里
Ext.XTemplate = function(){
Ext.XTemplate.superclass.constructor.apply(this, arguments);
var me = this,
s = me.html,
re = /<tpl\b[^>]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/,
nameRe = /^<tpl\b[^>]*?for="(.*?)"/,
ifRe = /^<tpl\b[^>]*?if="(.*?)"/,
execRe = /^<tpl\b[^>]*?exec="(.*?)"/,
m,
id = 0,
tpls = [],
VALUES = 'values',
PARENT = 'parent',
XINDEX = 'xindex',
XCOUNT = 'xcount',
RETURN = 'return ',
WITHVALUES = 'with(values){ ';
s = ['<tpl>', s, '</tpl>'].join('');
while((m = s.match(re))){
var m2 = m[0].match(nameRe),
m3 = m[0].match(ifRe),
m4 = m[0].match(execRe),
exp = null,
fn = null,
exec = null,
name = m2 && m2[1] ? m2[1] : '';
if (m3) {
exp = m3 && m3[1] ? m3[1] : null;
if(exp){
fn = new Function(VALUES, PARENT, XINDEX, XCOUNT, WITHVALUES + RETURN +(Ext.util.Format.htmlDecode(exp))+'; }');
}
}
if (m4) {
exp = m4 && m4[1] ? m4[1] : null;
if(exp){
exec = new Function(VALUES, PARENT, XINDEX, XCOUNT, WITHVALUES +(Ext.util.Format.htmlDecode(exp))+'; }');
}
}
if(name){
switch(name){
case '.': name = new Function(VALUES, PARENT, WITHVALUES + RETURN + VALUES + '; }'); break;
case '..': name = new Function(VALUES, PARENT, WITHVALUES + RETURN + PARENT + '; }'); break;
default: name = new Function(VALUES, PARENT, WITHVALUES + RETURN + name + '; }');
}
}
tpls.push({
id: id,
target: name,
exec: exec,
test: fn,
body: m[1]||''
});
s = s.replace(m[0], '{xtpl'+ id + '}');
++id;
}
for(var i = tpls.length-1; i >= 0; --i){
me.compileTpl(tpls[i]);
}
me.master = tpls[tpls.length-1];
me.tpls = tpls;
};
Mr-Jee
2010-11-18
打赏
举报
回复
[Quote=引用 2 楼 hch126163 的回复:]
你想要匹配什么啊?
匹配:<tpl></tpl>
/<tpl\b[^>]*>.+?<\tpl>/
[/Quote]
呵呵
你这个正则有问题呀
var str = "<tpl>asdfasdfasdfasdf\n<\tpl>";
var i = /<tpl\b[^>]*>.+?<\tpl>/g;
alert(i.test(str));
hch126163
2010-11-18
打赏
举报
回复
你想要匹配什么啊?
匹配:<tpl></tpl>
/<tpl\b[^>]*>.+?<\tpl>/
Mr-Jee
2010-11-18
打赏
举报
回复
你正则是完全拷贝过来的嘛?怎么连<\/tpl>都被换成<\tpl>了啊
常用
正则表达式
大全.txt
常用
正则表达式
大全.txt常用
正则表达式
大全.txt常用
正则表达式
大全.txt常用
正则表达式
大全.txt常用
正则表达式
大全.txt
正则表达式
转换工具
可以将输入的内容转换或过滤成有
正则表达式
的输出表达式
带你学会使用
正则表达式
内容简介:
正则表达式
,...这门课程可以非常快速的帮助大家理
解
正则表达式
,以及掌握如何在实际场景中用到它。 课程大纲: 为了让大家快速系统了
解
正则表达式
知识,我为您总结了思维导图,帮您梳理学习重点,建议收藏!
正则表达式
工具RegexBudd
RegexBuddy简介: 使用
正则表达式
是你完美的伴侣。轻松地创建
正则表达式
匹配你想要什么。清楚地理
解
复杂的
正则表达式
他人所写。快速测试任何
正则表达式
示例字符串和文件,防止对实际数据的错误。调试而猜测由逐句通过实际的匹配过程。使用
正则表达式
与源的代码片段会自动调整您的编程语言的细节。收集和文档库的供将来重复使用
正则表达式
。GREP(搜索和替换) 通过文件和文件夹。集成RegexBuddy 与您最喜爱的搜索和编辑工具的即时访问。这几天抽空看了一下,有新版本了,花了点时间破
解
了一下,时间仓促,难免有问题,欢迎大家 测试,旧版本的帖子就不更新了,大家下载新版本吧 下载下来,替换主程序就可以了,不会过期,以前网上的破
解
不完美,把所有弹窗都去掉了,还会过期。
DEELX
正则表达式
语法
DEELX 是一个在 C++ 环境下的与 Perl 兼容的
正则表达式
引擎。是 RegExLab 开展的一个研究开发项目。 写
正则表达式
可以参考了。 基本特点: 支持与 Perl 兼容的
正则表达式
语法。 支持 IGNORECASE, SINGLELINE, MULTILINE 等常见匹配模式。 兼容性强,能在 vc6, vc7, vc8, gcc, Turbo C++ 等大多数 C++ 环境编译。 支持命名分组,条件表达式,递归表达式等多种高级特性。(1.2版本新特点) CHM帮助文件格式,如
解
压缩后打开文件如不能正常使用,请在文件属性里"
解
锁"。
JavaScript
87,910
社区成员
224,616
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章