带有相同内容的带引号与非带引号的字符串的正则表达式

时间:2014-04-15 22:24:36

标签: javascript php html regex

我正在开发基于网络的文本文件编辑器 它可以用来编辑html,css,javascript和php脚本 原始的HTML。

为了让原始html显示在textarea字段中进行编辑,我必须转义关闭textarea标签:
<\/textarea>
这意味着当php打开并读取文件以放置在主机textarea标签集中时它会

str_replace('</text', '<\/text', $filestring);

因此,当编辑文件并准备保存时,我需要更换转义 (将<\/text更改回</text

但是,可能存在调用document.write时出现javascript字符串的情况 关闭标签都需要在字符串内保持转义。

所以我试图在javascript和/或php中定期表达,以检测两者的情况 引用和不引用的关闭textarea标签 由于字符串将是多行的,我需要检测报价集 可能跨越多条线。

到目前为止:

    File: js/runner.js
    0   |/*
    1 |new file created by lab_0 script on Saturday 12th of April 2014 05:23:51 PM
    2 |*/
    3 |
    4 |function runner()
    5 |         {
    6 |          this.run = function()
    7 |               {
    8 |                var txt = '  "<\/textarEa>" kjhgy <\/teXtarea>   ';
    9 |                var pat = /.*[^'|"].*(<\/teXtarea>).*[^"|'].*/ig
    10|                var match = pat.exec(txt);
    11|                return 'match: '+match[1]+' -- '+txt.replace(match[1], '');
    12|               }
    13|         }
    14|

这将找到并替换X int teXtarea但是如果这样做:

 var txt = '  "<\/textarEa>" kjhgy <\/teXtarea>  "<\/Textarea>" ';

它将匹配<\/Textarea>的最后一个实例。 此外,由于测试结果被写回浏览器,它似乎正在删除 逃脱(\)

这是将调用结果写入Obj.runner.run;

的代码
case 'runner': // switch on e.target.id
   var ret = JSrun.run(); // runner instantiated as JSrun
   var put = document.getElementById('run');
   var res = document.createTextNode('JS Run result: '+ret);
   if(!put.hasChildNodes())
   {
       put.appendChild(res);
   }
   else
   {
       put.childNodes[0].data = 'JS Run result: '+ret;
   }
   break;

因此,结果在浏览器源中不可见,以查看转义是否仍然存在。

0 个答案:

没有答案