Mel*_*Dog 6 javascript string jquery image
我有一个字符串,其中包含存储在var中的HTML图像元素.
我想从字符串中删除图像元素.
我试过了: var content = content.replace(/<img.+>/,"");
并且:var content = content.find("img").remove();但没有运气.
任何人都可以帮助我吗?
谢谢
Mat*_*lin 23
var content = content.replace(/<img[^>]*>/g,"");
Run Code Online (Sandbox Code Playgroud)
[^>]*表示除以外的任何数量的字符>.如果您使用.+,则如果有多个标记,则替换操作会立即删除它们,包括它们之间的任何内容.默认情况下操作是贪婪的,这意味着它们使用最大可能的有效匹配.
/g 在最后意味着替换所有出现(默认情况下,它只删除第一次出现).
使用该text()功能,它将删除所有HTML标签!
var content = $("<p>"+content+"</p>").text();
Run Code Online (Sandbox Code Playgroud)
var content = content.replace(/<img[^>"']*((("[^"]*")|('[^']*'))[^"'>]*)*>/g,"");
Run Code Online (Sandbox Code Playgroud)
它首先匹配<img. 然后[^>"']*匹配除>,"和 '任意次数之外的任何字符。然后(("[^"]*")|('[^']*'))匹配两个"之间的任何字符(除了"它自己,这是这个部分[^"]*)或相同的东西,但有两个'字符。
这方面的一个例子是
"asf<>!('"or'akl>"<?'。
这后面再次跟除了>,之外的任何字符,"并且出现 '任意次数。正则表达式在发现>一组单引号或双引号之外时结束。
>正如@Derek所指出的那样,这将解释在属性字符串中包含字符????因此将在以下测试场景中匹配并删除所有四个图像标签:
<img src="blah.png" title=">:(" alt=">:)" /> Some text between <img src="blah.png" title="<img" /> More text between <img /><img src='asdf>' title="sf>">
Run Code Online (Sandbox Code Playgroud)
这当然受到@Matt Coughlin的回答的启发。