这是HTML代码的一小部分,我希望得到包含的所有代码< ?和?取代。
简单地说,我只想提取下面给出的字符串。 例如,
var code='<td>Total Response Sets</td><? if(byExposure) { ?><td style="text-align:right;padding-right:10px"><?= question.totals["control"] ?></td>';
// how to extract the required code with regular expression ?
使用npinti后,我使用下面的代码,它给我第一个表达式&lt;%&amp; %取代。但是,我如何获得下面几个表达式?
var patt=/<\?\s*(.*?)\s*\?>/g;
var result=patt.exec(code);
console.log(result[1]); // o/p -> if(byExposure) {
(有关详细信息,代码用于在underscore.js中进行模板化)
答案 0 :(得分:1)
这个正则表达式:
<\?\s*(.*?)\s*\?>
应该符合您的需要。从给定的字符串中匹配以下内容:
<? if(byExposure) { ?>
<?= question.totals["control"] ?>
然后,您可以使用组提取标记之间的内容。检查this之前的SO线程,看看它是如何完成的。
这应该完成工作:
var code='<td>Total Response Sets</td><? if(byExposure) { ?><td style="text-align:right;padding-right:10px"><?= question.totals["control"] ?></td>';
var patt=/<\?\s*(.*?)\s*\?>/g;
var result=patt.exec(code);
while (result != null) {
alert(result[1]);
result = patt.exec(code);
}
答案 1 :(得分:1)
而不是exec
,请使用match
方法:
res = code.match(patt);
<强>输出:强>
["<? if(byExposure) { ?>", "<?= question.totals["control"] ?>"]
答案 2 :(得分:0)
我不确定你要提取什么。你只需要&lt ;?之间的第一个字符串吗?和?&gt;然后你可以使用:
(/<\?(.*?)\?>/.exec( code ))[1]
这将返回 if(byExposure){。如果你想匹配第一个&lt;?然后你可以使用:
(/<\?(.*?)\?>/.exec( code ))[1]