JS正则表达式如何取下面的字符

例如像javaeye论坛这个编辑器一样的
如果我单击List按钮就会生成下面的列表
[code="java"]
[list]
[*]
[/list]
[/code]

现在我要转换成如下



    • 但是用正则表达式子去不到换行符。。。

      我下的正则表达式如下:
      reg = /[list]\n(.*?)\n[\/list]/g;

      就是没有办法取到
      [code="java"]
      [list]
      [*]
      [/list]
      [/code]

      取到的都是空,还望大家指点
      [b]问题补充:[/b]
      还是没看懂什么意思。能说清楚点吗?

      我把你的代码拷贝到编辑器里运行了,弹出信息,跟我上面的要求有关吗?

      孺子不教,请多指教。
      [b]问题补充:[/b]
      很感谢您的回复。

      目前我也像您一样,做到了这样的一步
      [code="java"]
      var list = '[list]\n[*]\n[/list]';

      var reg = /[list]\n(.*?)\n[\/list]/g;
      [/code]

      定义了上面两个变量,并且写好了如同您给我第一个回答那样的正则表达式。

      我现在画面上有个按钮,就像JAVAEYE网站上编辑器中的List按钮一样(就在您给我回复的时候,上面有按钮可以按出来,有Code,有B等等)。

      同样我按下List按钮,在我的textarea入力框中会显示如下代码
      [code="java"]
      [list]
      [*]
      [/list]
      [/code]

      我是在单击按钮的时候,直接把
      [code="java"]
      var list = '[list]\n[*]\n[/list]';
      [/code]
      值写到了textarea框中,写进去的时候"list"换行显示在了textarea中,和javaeye网站的编辑器一样,换行显示了。问题是,我再去取的时候,用正则表达式去取,并想替换成
      [code="java"]
      [ul]
      [li]
      [ul]
      [/code]
      就怎么也取不到了,我取的方式如下:
      [code="java"]
      var str = "";
      str = $("#editor_text").html();//editor_text就是textarea入力框
      [/code]
      用上面的正则表达式
      [code="java"]
      var reg = /[list]\n(.*?)\n[\/list]/g;
      [/code]
      怎么也匹配替换不到了。
      但是我输入判断语句,确实又存在"\n"
      [code="java"]
      if(text.indexOf("\n") != -1)
      {
      alert("测试是否有换行!");
      }
      [/code]
      测试证明换行确实存在。

      如果您还不明白,简单的说,我就是想做一个和javaeye的【list】按钮一样的功能,并且在预览的时候能看到【ul】的效果。

      谢谢。

      [b]问题补充:[/b]
      你好。
      还是不行,两个取出来的字符串是一样的。
      [code="java"]
      var val = $("#editor_text").val();
      alert(val);
      alert($("#editor_text").html());
      [/code]

      取出来的值都是
      [code="java"]
      [list]
      [*]
      [/list]
      [/code]
      这样的字符串
      [b]问题补充:[/b]
      源代码比较避讳了。实在抱歉。

      你能把你写的发给我看看吗?

      我这里确实取不到啊。

4个回答

不知道你那为什么不行
我这试了是可以的
你能把你的测试脚本发上来么

[code="js"]
var list = '[list]\n[*]\n[/list]';
var reg = /[list]\n(.*?)\n[\/list]/g;
alert(list.replace(reg,'1111212'));
[/code]

额...
可能我理解你意思有问题..
你需求具体是?

你用的是JQuery么

试试

[code="js"]
var str = "";
str = $("#editor_text").val();//editor_text就是textarea入力框
[/code]

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问