【发布时间】:2017-04-07 13:41:27
【问题描述】:
我需要一个正则表达式来获取所有后续字符串的 src 值,考虑单引号、双引号和无引号。
双引号:
var a = '<script class="anyClass" src="anyFile.js" id="anyID">';
var b = '<script class="anyClass" src="anyFile.js">';
var c = '<script src="anyFile.js" id="anyID">';
var d = '<script src="anyFile.js">';
单引号:
var e = "<script class='anyClass' src='anyFile.js' id='anyID'>";
var f = "<script class='anyClass' src='anyFile.js'>";
var g = "<script src='anyFile.js' id='anyID'>";
var h = "<script src='anyFile.js'>";
不带引号:
var i= "<script class=anyClass src=anyFile.js id=anyID>";
var j= "<script class=anyClass src=anyFile.js>";
var k= "<script src=anyFile.js id=anyID>";
var l= "<script src=anyFile.js>";
预期匹配/返回:
anyFile.js
我有这个看起来很差的拆分解决方案:
var file = "";
var match = 'src="';
if(a.indexOf(match)>=0){
file = a.split(match);
file = file[1];
file = file.split('.js"');
file = file[0] + ".js";
}
else{
match = "src='";
if(a.indexOf(match)>=0){
file = a.split(match);
file = file[1];
file = file.split(".js'");
file = file[0] + ".js";
}
else{
match = "src=";
if(a.indexOf(match)>=0){
file = a.split(match);
file = file[1];
file = file.split('.js');
file = file[0] + ".js";
}
else {
file = "no match";
}
}
}
但它可以匹配错误的src 属性,所以我需要一个正则表达式。
任何帮助将不胜感激。
解决方案(特别感谢 Rajesh)
var a = "<script class='anyClass' src='anyFile.js' id='anyID'>";
var b = '<script class="anyClass" src="anyFile.js">';
var c = '<script src="anyFile.js" id="anyID">';
var d = '<script src="anyFile.js">';
var e = "<script class='anyClass' src='anyFile.js' id='anyID'>";
var f = "<script class='anyClass' src='anyFile.js'>";
var g = "<script src='anyFile.js' id='anyID'>";
var h = "<script src='anyFile.js'>";
var i= "<script class=anyClass src=anyFile.js id=anyID>";
var j= "<script class=anyClass src=anyFile.js>";
var k= "<script src=anyFile.js id=anyID>";
var l= "<script src=anyFile.js>";
var l= "<script src=anyFile.js>";
function getSrc(str){
var regex = /src=["']*[^"' >]+/;
var match = str.match(regex);
if(match!==null){
match = match[0];
var replaceRegex = /src=["' ]*/;
match = match.replace(replaceRegex, "")
}
else{
match = "no match";
}
console.log(match);
}
[a,b,c,d,e,f,g,h,i,j,k,l].forEach(getSrc)
【问题讨论】:
-
我没有看到任何尝试
-
你自己试过了吗?如果是,请提供您的代码来修复/改进它。这个问题也可以帮助你stackoverflow.com/questions/317053/…
-
我可以链接这个解决方案。也许你有它的东西。 It shows how to retrieve a substring that is between two specified characters
-
@Rajesh 我已经更新了问题
标签: javascript regex