Javascript 替换textarea中的正则表达式字符串html标记
Hai所有我如何替换textarea值中的正则表达式字符串html标记 具有全局属性的html 示例textarea值Javascript 替换textarea中的正则表达式字符串html标记,javascript,jquery,regex,string,textarea,Javascript,Jquery,Regex,String,Textarea,Hai所有我如何替换textarea值中的正则表达式字符串html标记 具有全局属性的html 示例textarea值 文本 或 文本 Lorem ipsum door sit ametLorem ipsum door sit ametLorem ipsum doorLorem ipsum door sit amet 代替 试试: (]*>).*? Js示例: ( // Start capture group number 1 < // M
文本
或
文本
Lorem ipsum door sit ametLorem ipsum door sit ametLorem ipsum door
Lorem ipsum door sit amet
代替
试试:
(]*>).*?
Js示例:
( // Start capture group number 1
< // Match literal opening < of tag
( // Start capture group number 2
[a-zA-Z]\w*\s // Match alpha char followed by 0 or more alphanumeric, followed by a space chars (i.e. HTML tag)
) // End capture group 2
[^>]* // Match ANYTHING that is not a literal '>' (i.e. rest of opening tag
> // Match literal closing > of tag
) // End capture group 1
.*? // Match ANYTHING until...
<\/\2> // Match closing tag using backreference to the opening tag from capture group 2
str.replace(/(]*>).*?/g,“$1替换”)
分解如下:
// Will work
<p>foo</p> => <p>REPLACEMENT</p>
<div class="asdfa">aslkdgladshg</div> => <div class="asdfa">REPLACEMENT</div>
<div class="asfs"><p>asdgaga</p></div> => <div class="asfs">REPLACEMENT</div>
// Won't work (note nested div)
<div class="asdgfasd"><div>asd kbgasdbk</div></div> => <div class="asdgfasd">REPLACEMENT</div>
(//启动捕获组编号1
/匹配标记的文字开头<
(//启动捕获组编号2
[a-zA-Z]\w*\s//匹配字母字符,后跟0或更多字母数字,后跟空格字符(即HTML标记)
)//结束捕获组2
[^>]*//匹配任何不是文字'>'的内容(即开始标记的其余部分
>//标记的匹配文字结束>
)//结束捕获组1
*?//匹配任何内容,直到。。。
//使用对捕获组2的开始标记的反向引用来匹配结束标记
因此,当成功匹配时,我们有两个填充的捕获组:
1:匹配整个开场标签,包括内容
2:仅匹配标签本身
因此,我们的替换模式可以是:$1REPLACEMENT
注意:如果在具有相同类型的嵌套标记的HTML上使用,则会出现这种情况。众所周知,使用regexp解析HTML非常困难,理想情况下,您可以使用HTML解析器,但对于小型用例,这是可以接受的
//会有用的
foo=>更换
aslkdgladshg=>更换
asdgaga的更换
//不起作用(注意嵌套的div)
asd kbgasdbk=>更换
我想您正在寻找.replace(/(]*>)(.*)/g,“\1\n\2\3\n”)
。您只需要捕获开始标记及其类。能否给出所需输出的示例?相关:此文本的示例
=\n
\n
( // Start capture group number 1
< // Match literal opening < of tag
( // Start capture group number 2
[a-zA-Z]\w*\s // Match alpha char followed by 0 or more alphanumeric, followed by a space chars (i.e. HTML tag)
) // End capture group 2
[^>]* // Match ANYTHING that is not a literal '>' (i.e. rest of opening tag
> // Match literal closing > of tag
) // End capture group 1
.*? // Match ANYTHING until...
<\/\2> // Match closing tag using backreference to the opening tag from capture group 2
// Will work
<p>foo</p> => <p>REPLACEMENT</p>
<div class="asdfa">aslkdgladshg</div> => <div class="asdfa">REPLACEMENT</div>
<div class="asfs"><p>asdgaga</p></div> => <div class="asfs">REPLACEMENT</div>
// Won't work (note nested div)
<div class="asdgfasd"><div>asd kbgasdbk</div></div> => <div class="asdgfasd">REPLACEMENT</div>