// JavaScript Document
// UBB代码简单实现 lxin v0.1beta;
function filter(s)...{
    
    //替换[b][/b][i][i]
    s=s.replace(/</g,"&lt;");
    s=s.replace(/>/g,"&gt;");
    s=s.replace(/[b]/g,"<b>");
    s=s.replace(/[/b]/g,"</b>");
    s=s.replace(/[i]/g,"<i>");
    s=s.replace(/[/i]/g,"</i>");
    //~~~~~
    
    //替换[size=*][/size]
    var ts=s;//临时变量
    var i=0;//记录匹配到了什么地方
    while(ts.match(/[size=d...{1,2}]/)!=null)...{
        var t=ts.match(/[size=d...{1,2}]/);//获得匹配的
        i=ts.indexOf(t)+t.length;//获得下次开始匹配的位置
        var ss=t.toString();//必要
        var size=parseInt(ss.substring(ss.indexOf("=")+1));//获得[size=*] 的*;
        ss=ss.replace(/[/g,"/[");//注意Stirng里也是转意符
        ss=ss.replace(/]/g,"/]");
        //alert(ss);
        s=s.replace(new RegExp(ss,"g"),"<font size="+size+" >")//将[size=*]替换为<font size=*>
        if(ts.length>i)ts=ts.substring(i);//冲这次匹配字符的后一个字符开始再次匹配;
        else ts="";
        }
    s=s.replace(/[/size]/g,"</font>");
    //~~~~~
    
    //替换[link=*][/link]
    ts=s;//临时变量
    i=0;//记录匹配到了什么地方
    while(ts.match(/[link="[^"]*"]/)!=null){
        var t=ts.match(/[link="[^"]*"]/);//获得匹配的
        i=ts.indexOf(t)+t.length;//获得下次开始匹配的位置
        var ss=t.toString();//必要
        var linked=ss.substring(ss.indexOf("="")+2,ss.indexOf(""]"));//获得[link="*"] 的*;
        ss=ss.replace(/[/g,"/[");//注意Stirng里也是转意符
        ss=ss.replace(/]/g,"/]");
        //alert(ss);
        if(linked.match(/http:///)==null)linked="http://"+linked;
            
            
        s=s.replace(new RegExp(ss,"g"),"<a href=""+linked+"" >")//将[link=*]替换为<a href=*>
        if(ts.length>i)ts=ts.substring(i);//冲这次匹配字符的后一个字符开始再次匹配;
        else ts="";
        }
    s=s.replace(/[/link]/g,"</a>");
    //~~~~~
    
    //替换[color=*][/color]
    ts=s;//临时变量
    i=0;//记录匹配到了什么地方
    while(ts.match(/[color="[#]?w*"]/)!=null)...{
        var t=ts.match(/[color="[#]?w*"]/);//获得匹配的
        i=ts.indexOf(t)+t.length;//获得下次开始匹配的位置
        var ss=t.toString();//必要
        var color=ss.substring(ss.indexOf("="")+2,ss.indexOf(""]"));//获得[color="*"] 的*;
        ss=ss.replace(/[/g,"/[");//注意Stirng里也是转意符
        ss=ss.replace(/]/g,"/]");
        //alert(ss);
        s=s.replace(new RegExp(ss,"g"),"<font color=""+color+"" >")//将[color=*]替换为<font color="*">
        if(ts.length>i)ts=ts.substring(i);//冲这次匹配字符的后一个字符开始再次匹配;
        else ts="";
        }
    s=s.replace(/[/color]/g,"</font>");
    s=s.replace(/ /g,"<br>");
    //~~~~~
    //替换[link=*][/link]
    ts=s;//临时变量
    i=0;//记录匹配到了什么地方
    while(ts.match(/[img="[^"]*"]/)!=null){
        var t=ts.match(/[img="[^"]*"]/);//获得匹配的
        i=ts.indexOf(t)+t.length;//获得下次开始匹配的位置
        var ss=t.toString();//必要
        var linked=ss.substring(ss.indexOf("="")+2,ss.indexOf(""]"));//获得[img="*"] 的*;
        ss=ss.replace(/[/g,"/[");//注意Stirng里也是转意符
        ss=ss.replace(/]/g,"/]");
        //alert(ss);
        if(linked.match(/http:///)==null)linked="http://"+linked;
            
            
        s=s.replace(new RegExp(ss,"g"),"<img src=""+linked+"" >")//将[link=*]替换为<a href=*>
        if(ts.length>i)ts=ts.substring(i);//冲这次匹配字符的后一个字符开始再次匹配;
        else ts="";
        }
    
    //~~~~~
    
    return s;
    }

javasrcipt实现简单UBB代码方法相关推荐

  1. 用html实现模糊效果,css实现简单背景模糊的方法(代码示例)

    本篇文章给大家带来的内容是介绍css实现简单背景模糊的方法(代码示例).有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 使用filter属性来设置模糊值 效果: css样式: .co ...

  2. html转ubb php,php实现转换ubb代码的方法

    本文实例讲述了php实现转换ubb代码的方法.分享给大家供大家参考.具体如下: function ubb2html($content) { global $article; //是否自动识别 if ( ...

  3. [Android] Android MVP 架构下 最简单的 代码实现

    Android  MVP 架构下  最简单的 代码实现 首先看图: 上图是MVP,下图是MVC MVP和MVC的区别,在于以前的View层不仅要和model层交互,还要和controller层交互.而 ...

  4. vba 编辑combobox内容_初识Visual Basic编辑器并建立一段简单的代码

    大家好,从今日开始我正式推出"VBA之EXCEL应用"教程,这个教程是面向初学人员的教程,教程一共三册,十七个章节,从简单的录制宏实现一直讲到窗体的搭建,都是我们在利用EXCEL工 ...

  5. Unity 简单示例代码和向导/Unity Aplication Block

    Unity 简单示例代码和向导 关于Unity 的说明和下载地址,请访问[微软控制反转和依赖注入容器Unity 1.0发布] http://forum.entlib.com/Default.aspx? ...

  6. js/jq基础(日常整理记录)-2-一个简单的js方法实现集合的非引用拷贝

    一.一个简单的js方法实现集合拷贝 做web项目的时候,少不了和js中的数组,集合等对象接触,那么你肯定会发现,在js中存在一个怪异的现象就是数组和集合的拷贝都是地址复制,并不是简单的数据的拷贝. 举 ...

  7. 原生js写三级联动 java_原生js三级联动的简单实现代码

    本文实例为大家分享了js查询天气应用,供大家参考,具体内容如下 实现功能:打开网页时显示用户所在城市的天气状况,在输入框输入城市可查询其它城市. 实现过程:先调用百度地图的API来获取用户所在的城市, ...

  8. 段错误产生原因及简单的调试方法

    参考:段错误产生原因及简单的调试方法 作者:编程那些年 网址:https://mp.weixin.qq.com/s/KP9ZFn71CO_vB2I4igZLMA 段错误产生原因 1.访问不存在的内存地 ...

  9. 《Node.js 入门系列》—— 一些简单的排错方法(一)

    目录 TypeError: undefined is not a function TypeError: Cannot read property 'xxx' of undefined 或者 Type ...

最新文章

  1. [物理学与PDEs]第2章习题13 将 $p$ - 方程组化为守恒律形式的一阶拟线性对称双曲组...
  2. Sidebar 左右菜单的使用
  3. python3 局域网udp广播
  4. 如何画好科技论文中的插图
  5. 新疆兵团谋定丰收美景-万祥军:对话农民丰收节交易会
  6. apple tv 开发_如何防止Apple TV进入睡眠状态
  7. [Java基础]字节流读数据
  8. C#复数类Complex的封装
  9. 前端开发 浮动相关的规则 overflow 0229
  10. PyQt5入门——手把手教你配置环境,快速上手GUI程序开发(Anaconda+PyCharm+Qt Designer+pyuic)
  11. c语言中栈的作用,栈(Stack)的概念和应用及C语言实现
  12. java+phantomjs实现动态网页抓取
  13. 拓端tecdat|R语言使用灰色关联分析(Grey Relation Analysis,GRA)中国经济社会发展指标
  14. 斩获双奖 | 悬镜安全亮相IDC 2022 CSO全球网络安全峰会
  15. 大数据项目实训教学解决方案
  16. IDEA Maven 使用教程
  17. 【高等数学笔记】变限积分求导问题
  18. navicat如何连接mysql?navicat 连接mysql Navicat使用教程
  19. Mybatis-Plus分页查询total始终为0
  20. 大数据的5大关键技术点

热门文章

  1. 【SSO单点登录】ticket+token+redis 实现sso单点登录 防重放、防盗用、防篡改
  2. orientdb教程(1)-orientdb安装
  3. GMSSL 与 TLS 1.1 区别
  4. fastboot模式和recovery模式
  5. 程序员(数字游民)应该去哪些城市发展呢
  6. 【机组】--总线-例题
  7. Flex Rect用法
  8. 7-1 求奇数分之一序列前N项和 (15 分)
  9. 使用javaparser分析重构java源码
  10. 2019 CSDN 人气最高博客排名榜,人气最高的前十博主