日期:2014-05-16  浏览次数:20483 次

javascript正则匹配字符串可有可无的问题
本帖最后由 joulang 于 2012-12-08 12:30:00 编辑
我要匹配html代码中的<script>标签,要求同时能匹配以下两种类型的标签:
<script language="javascript" src="xxx.js"></script>
<script language="javascript"> code..</script> 

即要求src属性可有可无都能匹配上(如果有src属性,取出其值)

下面是我的代码:

var patt = /<script[^\>]*?(src=\"*\'*([^\>\"]+)\"*\'*)*[^\>]*?\>([^\x00]*?)<\/script>/g;

这样匹配不出来含有src属性的标签,但是只要把红色的*改为+就可以,以下代码可以匹配含src属性的标签,但不能匹配不包含src属性的script标签,求解决方法

var patt = /<script[^\>]*?(src=\"*\'*([^\>\"]+)\"*\'*)+[^\>]*?\>([^\x00]*?)<\/script>/g;


我的全部代码如下:
var str = document.getElementById("loop").innerHTML;
var patt = /<script[^\>]*?(src=\"*\'*([^\>\"]+)\"*\'*)*[^\>]*?\>([^\x00]*?)<\/script>/g;
var result = Array();
var T;
while((T = patt.exec(str)) != null){//alert();
if(T[2]){
result.push(T[2]);
// result.push(T[3]);
}
}

if(result.length>0){
for(var v in result){
document.write(result[v]+"<br />");
}
}

求同时匹配上面两种标签的正则代码
------解决方案--------------------

var patt = /<script.*?t"([\W]src=.*.js*?\")*[\W]{1}(.*?)<\/script>/g;

已测试
------解决方案--------------------
引用:
引用:var context=["<script language=\"javascript\" src=\"xxx.js\"><\/script>","<script language=\"javascript\"> code..<\/script>"];
var reg=/<script language="javascript"(……


别单看那个t,t后面有个"号,表示t"这串指的是 language="javascript"中最后两个字符。