javascript 正则表达式 替换 html 中的 p标签替换成BR标签

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 正则表达式 替换 html 中的 p标签替换成BR标签相关的知识,希望对你有一定的参考价值。

例如
<div id="test">
<p>我是段落哦~!</p>
</div>
<h2 onclick="test()">点我把</h2>

function test()
//没引入JQ文件
var _one = $("#test").html();
_one = _one.replace("如何把p","替换成<br>")
$("#test").html(_one );

<p>标签标示一行,<br>标示换行,楼主的需求应该是想把<p>的换行形式换成<br>的形式
<br>是一个自闭合标签,所以要替换的时候,应该是在</p>的位置插入<br>,把<p>去掉就好了
可以这么写
_one = _one.replace("<p>","").replace("<\/p>",<br>")追问

不兼容IE6.。。。 令人抓狂。我在做一个DIV的编辑器,iE下回车是产生P标签,想换成BR而已,就卡这了。求赐教呀,谢谢

追答

不兼容的表现是什么?

追问

_one = _one.replace("","").replace("",") 这样替换之后在IE6下还是我是段落哦~!

谷歌和火狐都没问题 都是 我是段落哦~! 。

追答

哦,那是因为IE的默认标签都是大写,改成正则就好了
_one = _one.replace(//i,"").replace(//i,")

参考技术A _one = _one.replace(/<p>[\s\S]*<\/p>/ig, '<br>');追问

这样会吧P里面的内容也替换掉呀。我要保留P里面的文字的。

追答

保留P标签里的文字,那br加在哪里呢?br标签里面是没有内容的,你只要加在P标签内文字的前面还是后面呢?

追问


我是段落哦~!

我是段落哦~!

我是段落哦~!

替换后:

我是段落哦~!
我是段落哦~!
我是段落哦~!

追答

_one = _one.replace(/([\s\S]*?)/ig, '$1');

追问

$1代表什么呀。 写完整些啊,谢谢哈。

追答

$1、$2、...、$99 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。详见参考资料。

你没有引入jquery,完整的代码是要什么样的呢?

我是段落哦~!

点我把

function test()
//没引入JQ文件
var _one = $("#test").html();
_one = _one.replace(/([\s\S]*?)/ig, '$1');
$("#test").html(_one );

参考资料:http://w3school.com.cn/js/jsref_replace.asp

用正则表达式替换 Javascript

【中文标题】用正则表达式替换 Javascript【英文标题】:Javascript Replace by Regex 【发布时间】:2014-01-26 05:36:21 【问题描述】:

我正在使用 RegExp 来制作 slug。我是说替换所有字符与这样的模式不匹配:

str = str.replace(new RegExp('[^a-z0-9-]','g'), '');

它有效,但我需要询问它是否是正确的方式/语法/方法?

感谢任何提示。

【问题讨论】:

你可以这样做,或者str = str.replace(/[^a-z0-9-]/g), ''); 最后一个连字符也错了——'*&amp;%^$--kjhkhkjh'.replace(/[^a-z0-9]/g, ''); @epoch 最后一个连字符是错的? 连字符是字符类中的特殊字符,应该转义。 【参考方案1】:

1) 你可以写

new RegExp('[^a-z0-9-]','g')

作为

/[^a-z0-9-]/g

你写的正则表达式代表如下:

2) [] 中的任何内容都表示任何字符不是序列,但是当 [^] 开头出现抑扬符时表示 NOT在

3)a-z代表从a到z的所有字符(小写字母)

4) 0-9 表示 0 到 9 以及末尾的连字符 (-)...以及连字符。

因此,您想保留哪些字符?如果您只想保留字母数字,请使用<b>/[^A-Za-z0-9]/g</b>(这是区分大小写的版本)或<b>/[^a-z0-9]/gi</b> 不区分大小写

修饰符/标志:<b>g</b> = 全局,<b>i</b>= 不区分大小写

看的好地方:Mozilla MDN RegExp

【讨论】:

虽然这基本上是一个很好的答案,但您可能需要考虑更好的格式,例如使用更多的代码块(除其他外),以​​提高可读性,从而使其成为更好的答案。 :-) @BastiM 感谢您的建议。希望这种格式有帮助。老实说,我还没有探索过格式化选项,我不知道除了在新行上添加四个字符缩进的代码之外还能做什么。 现在看起来好多了 :) 随着时间的推移,你会探索所有这些格式化的东西,你会习惯它们。 @YahyaE 只需在第一个位置添加另一个 character class (您可能需要阅读 :) ),只允许字符。 @YahyaE 这应该可以解决问题:src = src.replace(new RegExp("[^a-z0-9-]*","gi"), "").replace(new RegExp("[^a-z]?([a-z0-9-])","i"),"$1");

以上是关于javascript 正则表达式 替换 html 中的 p标签替换成BR标签的主要内容,如果未能解决你的问题,请参考以下文章

Javascript 将正则表达式 \\n 替换为 \n,将 \\t 替换为 \t,将 \\r 替换为 \r 等等

正则表达式替换 HTML 文档中的空格

使用正则表达式(regex)替换jQuery / JavaScript中的选定文本

JavaScript 替换/正则表达式

javascript正则表达式题目案列

Javascript 正则表达式替换所有非货币字符