挑战正则表达式 有难度

jacketzhou 2009-09-15 11:53:23
{AA}[aa](url1) {AA}[bb](url2) {BB}[vv](url7) {AA}[cc](url3) {BB}[zz](url8)
转换成
AA(<a href=(url1)>aa</a> <a href=(url2)>bb</a> <a href=(url3)>cc</a>) BB(<a href=(url7)>aa</a> <a href=(url8)>zz</a>)

说明一下:大类1(小类1 小类3 小类2) 大类2(小类3 小类2)

括号里的小类不用排序

哪位高手可以用正则表达示转换出来?
...全文
79 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wansai00 2009-09-16
  • 打赏
  • 举报
回复
因为还要牵涉到逻辑运算 所以正则处理成代码段格式 再做处理 应该会更直观 更简洁一些

zString = zString.replace(/\{([^\}]+)\}\[(^\]+)\]\([^\)]+)\)/g, 'addItem("$1", "$2", "$3");')

var html = { };
var addItem = function(varClass, varText, varLink)
{
if (!html[varClass]) html[varClass] = [];
html[varClass].push({ text:varText, link:varLink });
}
eval(zString);
for (k in html)
{
print(k + '(');
for (var i = 0; i < html[k].length; i++)
{
print('<a href="' + html[k][i].link + '">' + html[k][i].text + '</a>');
}
print(')');
};

意思就是 把字符串正则成为代码段
babycry627 2009-09-16
  • 打赏
  • 举报
回复
友情顶一个
toury 2009-09-16
  • 打赏
  • 举报
回复

<script>
var s="{AA}[aa](url1) {AA}[bb](url2) {BB}[vv](url7) {AA}[cc](url3) {BB}[zz](url8)";
var arrCate=Array(/\{AA\}[^ ]+/g,/\{BB\}[^ ]+/g)//将要被正则的大类名称的正则表达式写入数组

var sHTML='';
for(var k=0;k<arrCate.length;k++){
var arr=s.match(arrCate[k]);
var category1='';
for(var i = 0; i < arr.length; i++){
if(category1.length==0){
category1= arr[i].match(/\{([^\}*]+)\}/)[0];
category1=category1.substr(1,category1.length-2);
sHTML+=category1+"("
}
var temp1=arr[i].replace(/\{([^\}*]+)\}/,"");
var url= temp1.match(/\(([^\)*]+)\)/)[0];
var category2= temp1.match(/\[([^\]*]+)\]/)[0];
category2=category2.substr(1,category2.length-2);
sHTML+="<a href="+url+">"+category2+"</a>"
}
sHTML+=") "
}
alert(sHTML)
</script>
palosky 2009-09-15
  • 打赏
  • 举报
回复
有难度啊 自愧不如

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧