关于表格的正则表达式讨论(表格)

 更新时间:2006年08月07日 00:00:00   作者:  
看过许多UBB代码,包括JS,ASP,JSP的,一直没发现表格的UBB,虽然可以直接用HTML模式实现相同表格功能,但对于某些开放的站点来说开放HTML模式终究是不合适的,故一直想实现表格的UBB。

     我的设想是在HTML编辑器(HTML,FRONTPAGE,DW)中作好表格,把<替换为[,>替换为],直接复制HTML并提交发布。

     可惜经过实践,发现很难。因为表格的HTML标记和其他元素的HTML标记差别很明显,主要原因TD,TR,特别是TABLE都能嵌套。其实我遇到的关键问题在于我不会写 不包含某个单词或语句(非单字符)的正则 ,譬如下面标记


QUOTE:
[TABLE][TR]  [TD]哈哈[TABLE][TR][TD]的[/TD][/TR][/TABLE][/TD][/TR][/TABLE]
你要匹配正确[TD]*[/TD]你就得必须保证*不包括[TABLE][TR][TD]等,注意不能用[^\[]*?啊,因为用他无法匹配正确的[/TD]的,所以问题在与我怎么保证这个*不包括[TABLE][TR][TD]呢,(我不会写)。所以我:

退一步,先用\[td[^\]]*?\][^\[]*?\[table找到最后一个(其实最内层的)表格,然后把最内层的表格转为HTML标记,然后循环从头开始再来一次,一直到所有标记被替换。这个理论上是可以实现的。我用JSP正在实验,需要时间,希望有兴趣朋友用ASP,PHP实验一下。

因为我急用,所以我又退了一步,就是直接查找][TABLE]等标记然后替换,有4个表达式,[TABLE][TR][TD]、[/TD][/TR][TR][TD]、[/TD][TD]、[/TD][/TR][TABLE] ,大家知道,UBB需要把/R/N替换成<BR>的,于是我用上面作出的正则查找并替换掉所有[TABLE]和[TR]和[TD]和[/TD]和[/TR]和[/TABLE]中的换行。其实这个表达式比下面表达式就多了这个替换换行功能,其不足之处是很明显的,就是不能完善的剔除非配套的标记,必须保证所有TABLE标记是正确配套的(有TBODY的再改改就是了),否则乱套。总 这一步我实践还不错。

再退一步,其实没法退了,就是直接单个查找替换[TABLE]等标记,这是最苯的方法了,也是效果最不好的,因为大家知道在HTML编辑器里的表格标记中好多换行的,而UBB是为换行转为<BR>的,所以这个方法实现了会发现好多空行的,而且这个方法和上面那一步一个共同缺点就是更不能剔除非配套标记。


附我写的退一步后的正则:(我用JSP)


QUOTE:
\\[(table)([^\\[]*?)\\][^\\[]*?\\[tr\\][^\\[]*?\\[td([^\\[]*)\\]|\\[\\/(td)\\][^\\[]*?\\[\\/tr\\][^\\[]*?\\[tr\\][^\\[]*?\\[td([^\\[]*)\\]|\\[\\/(td)\\][^\\[]*?\\[td([^\\[]*)\\]|\\[\\/(td)\\][^\\[]*?\\[\\/tr\\][^\\[]*?\\[\\/table\\]
我想如果是管理员发布信息什么的,能保证表格标记的正确的话用这个还可以的。其实如果有人想捣乱的话,再严谨的UBB也不能防止的啊。
欢迎有兴趣者来此讨论,提出更好建议,打造最好最全的UBB。

[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]

相关文章

  • ip138中各种客户端验证js代码

    ip138中各种客户端验证js代码

    包括ip验证,身份证验证,手机号码验证,电话号码,邮政编码验证,域名验证等,其实好的代码,都在应用中,大家多去扒代码吧。
    2009-12-12
  • 正则表达式判断所填入号码的运营商js代码修改版

    正则表达式判断所填入号码的运营商js代码修改版

    正则表达式判断所填入号码的运营商js代码修改版,需要的朋友可以参考下
    2012-10-10
  • 正则表达式轻松消除HTML代码

    正则表达式轻松消除HTML代码

    正则表达式再次让我震撼,寥寥数行代码就可以完成普通代码不易实现的功能,至少是实现起来比较复杂的功能。
    2009-02-02
  • 20个正则表达式必知(能让你少写1,000行代码)

    20个正则表达式必知(能让你少写1,000行代码)

    这篇文章主要介绍了20个正则表达式必知(能让你少写1,000行代码)的相关资料,需要的朋友可以参考下
    2016-04-04
  • 正则表达式分组实例详解

    正则表达式分组实例详解

    这篇文章主要介绍了正则表达式分组实例详解,需要的朋友可以参考下
    2016-12-12
  • 如何使用正则表达式保留部分内容的替换功能

    如何使用正则表达式保留部分内容的替换功能

    其实工作中一直在用到正则表达式,只是用来替换的操作显然没有那么多,今天偶然遇到,还是有点陌生的,这里记录一下,下面这篇文章主要给大家介绍了关于如何使用正则表达式保留部分内容的替换功能,需要的朋友可以参考下
    2023-03-03
  • 正则表达式教程之操作符及说明详解

    正则表达式教程之操作符及说明详解

    这篇文章主要介绍了正则表达式教程之操作符及说明,详细分析了正则表达式中常见操作符及相应的功能,需要的朋友可以参考下
    2017-01-01
  • 正则表达式惰性匹配模式(?)

    正则表达式惰性匹配模式(?)

    在贪婪匹配模式一章节已经说过人性是贪婪的,希望获得更多的金钱、地位甚至美女,但是也有很多清心寡欲的人,只要满足基本的生活需求就可以了,在正则表达式中也有这样的匹配原则,下面就进行一下介绍
    2016-12-12
  • 正则表达式常见密码验证方式总结大全

    正则表达式常见密码验证方式总结大全

    对于门户网站用户注册或修改密码时,需要有正则表达式验证密码,根据安全级别不同,网站会设置不同基本的密码正则表达式,这篇文章主要给大家介绍了关于正则表达式常见密码验证方式总结的相关资料,需要的朋友可以参考下
    2024-05-05
  • VsCode中常用的一些正则表达式操作方法

    VsCode中常用的一些正则表达式操作方法

    正则真的好用,平时工作用正则最多的地方就是在编辑器里做查找替换,之前系统学习了一段时间的正则但有些技巧长时间不用有些生疏了,这篇文章主要给大家介绍了关于VsCode中常用的一些正则表达式操作方法,需要的朋友可以参考下
    2024-05-05

最新评论