I'我在尝试将一个变量传递到一个已经工作的复杂正则表达式时遇到了问题
I'm having trouble trying to pass a variable into a complex regex that already works
下面是我一直在处理的一些代码,它基本上接受一个包含HTML的字符串,并删除class="normal"的元素。为此,原型函数在实际删除元素及其所有内部内容之前,先删除所有换行符等。以下代码按预期工作:
var msg = '<p>Keeping this paragraph</p>'n<p class="normal">Removing this paragraph<br>'n</p>'n<p class="normal">Another paragraph to remove<br>'n</p>';
String.prototype.takeOut = function() {
return this.replace(/('r'n|'n|'r)/gm," ")
.replace(/<p[^>]*class="normal"[^>]*>(.*?)<'/p>/g, '');
};
alert(msg.takeOut());
我的问题是,我想通过这样的方法传递一个参数…
msg.takeOut('normal')
让原型函数接受这个参数来删除我们想要的任何类的元素,比如:
msg.takeOut('foo')
msg.takeOut('bar')
下面是一个更详细的例子:
http://jsfiddle.net/sc276v98/
我知道"new RegEx(("可能是解决方案,但我如何将其融入到已经有效的方案中?请不要jQuery!谢谢你的帮助!
由于Mintastic已经有了一个使用Regex的工作解决方案,这只是一个替代方案,使用节点:
var msg = '<p>Keeping this paragraph</p>'n<p class="normal">Removing this paragraph<br>'n</p>'n<p class="normal">Another paragraph to remove<br>'n</p>';
String.prototype.takeOut = function(x) {
var temp = document.createElement('div'), targets = temp.getElementsByClassName(x);
temp.innerHTML = this;
while(targets.length){ temp.removeChild(targets[0]); }
return temp.innerHTML;
};
alert( msg.takeOut('normal') );
基于jsfiddle代码,尝试:
String.prototype.takeOut2 = function(i) {
var regExp = new RegExp('<p[^>]*class="'+i+'"[^>]*>(.*?)<'/p>', 'g');
return this.replace(/('r'n|'n|'r)/gm," ")
.replace(regExp, '');
};
相关文章:
- 当单元格内容由于forumula从另一个工作表编译数据而更改时发送电子邮件
- 当源工作表添加了行时,如何编写在一个工作表中添加行的脚本
- 如何在jquery中为object键创建一个工作变量以避免额外的代码
- 是否有可能在 threejs 中创建一个工作的计算机界面
- Javascript .call() 用法.一个工作案例,一个不是.有什么区别
- 我可以在 MVC 3.0 中获得一个工作 Asp.NET jsTree 4 示例,并异步加载节点
- 将数据从一个工作表复制到另一个工作表;使用目标工作表中的复制数据创建一个表
- 即使我从另一个工作小提琴复制代码,JSFiddle 也不起作用
- dojo's registry.findWidgets() 的一个工作示例
- 根据条件将行从一个工作表复制到另一个工作表
- 你如何使用JavaScript制作一个工作时钟
- 网络音频Api:我如何添加一个工作卷积器
- 我想编辑一个工作的javascript代码来增加它的功能
- 多个谷歌图表,只有一个工作
- 选择一个工作的国家
- jQuery Ajax的两个相同的函数为其中一个工作,而不是另一个
- 两次相同的onclick功能-只有一个工作
- 是否有一个工作的qrCode阅读器在Js/Jquery那里
- 将一个工作的jQuery表单复制到另一个位置,但只复制原来的工作
- 在两个不同的工作表中查找具有相同列的选定行,并将其从其中一个工作表中删除