国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Regex > 正文

關于表格的正則表達式討論(表格)

2020-03-16 21:23:30
字體:
來源:轉載
供稿:網友
看過許多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。 


  1. <script> 
  2. function tableubb(s){ 
  3.  var n=s.match(//[table/]/ig).length; 
  4.  var m=s.match(//[//table/]/ig).length; 
  5.  for(var i=0;i<Math.min(n,m);i++){ 
  6.   ss=s.replace(//[table/](([/s/S](?!/[table/]))*)/[//table/]/ig,'<table border="1">$1</table>'); 
  7.   ss=s.replace(//[tr/](([/s/S](?!/[tr/]))*)/[//tr/]/ig,'<tr>$1</tr>'); 
  8.   ss=s.replace(//[td/](([/s/S](?!/[td/]))*)/[//td/]/ig,'<td>$1</td>'); 
  9.  } 
  10.  return(s); 
  11. </script> 
  12. <textarea id="t"> 
  13. [TABLE] 
  14.  [TR] 
  15.   [TD] 
  16.    哈哈 
  17.    [TABLE] 
  18.     [TR] 
  19.      [TD] 
  20.       的 
  21.       [TABLE] 
  22.        [TR] 
  23.         [TD] 
  24.          的 
  25.          [TABLE] 
  26.           [TR] 
  27.            [TD] 
  28.             的 
  29.            [/TD] 
  30.           [/TR] 
  31.          [/TABLE] 
  32.         [/TD] 
  33.        [/TR] 
  34.       [/TABLE] 
  35.      [/TD] 
  36.     [/TR] 
  37.    [/TABLE] 
  38.   [/TD] 
  39.  [/TR] 
  40. [/TABLE] 
  41. </textarea> 
  42. <script> 
  43. document.write(tableubb(document.getElementById('t').innerHTML)); 
  44. </script> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 思茅市| 舞阳县| 镇赉县| 富蕴县| 裕民县| 门源| 西平县| 靖远县| 藁城市| 鲁山县| 石林| 竹溪县| 抚宁县| 陆良县| 象州县| 涟源市| 彭州市| 平顶山市| 嘉峪关市| 陇南市| 黔南| 丰都县| 临汾市| 民勤县| 靖安县| 海城市| 永平县| 班玛县| 沁水县| 丹阳市| 内丘县| 绥滨县| 慈利县| 库车县| 万盛区| 宁明县| 盐山县| 郸城县| 青龙| 盐池县| 灌阳县|