js正则匹配,怎样才能匹配到需要的js呢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js正则匹配,怎样才能匹配到需要的js呢相关的知识,希望对你有一定的参考价值。

假如我要匹配第二个js,正则要怎么写呢
<script src="aaa.js" type="text/javascript"></script> <script type="text/javascript">agag</script>
一定要正则,我的意思是只匹配到不包含src的的script。<script src="aaa.js" type="text/javascript"></script><script type="text/javascript">agag</script><script src="bbb.js" type="text/javascript"></script>不管有多少个script ,只要没有src的js匹配上就好。比如上面这些,我需要匹配到<script type="text/javascript">agag</script>而过滤掉另外两个

我需要的是一条匹配规则。

var reg = /\\<script\\s*(?!=(src[\\=\\w\\.\\'\\"\\s\\-]*))type\\=\\"text\\/javascript\\"\\>[^script]*\\<\\/script\\>/gim;

var str = '<script src="aaa.js" type="text/javascript"></script><script type="text/javascript">agag</script><script src="bbb.js" type="text/javascript"></script>';

str.match(reg);

参考技术A

你好,如果是要过滤掉没有src的script标签,直接用js判断一下即可:

var src = document.getElementsByTagName('script');
  for (var i = 0; i < src.length; i++) 
    if(src[i].getAttribute('src'))
      console.log(src[i]);
    
  ;

希望能帮到你~~

追问

我需要正则匹配。不过还是感谢你的回答

追答

没事

参考技术B var srcArr = [...]; // 我假设你拿到了所有的script字符串列表;如果不是字符串类型也可以.
var rule = /...../; // 假设你已经写好了这个正则
for(var i=0; i< srcArr.length; i++)
if(srcArr[i].match(rule))
// 匹配到了.然后这里写你的业务逻辑...
// 你可以再建一个数组, 把这里匹配到的放进去,便于后面的处理
// newArr.push(srcArr[i]);



如果你是按我这个思路写, 我觉得你可以最大化的简化这个正则:
var rule = /src/;
if加个 ! 反判断就是了..
参考技术C (\<script( )?type="text\/javascript">(.+)?\<\/script\>) 参考技术D 试试这个:
(?i)\<\bscript\b\s+\btype\b\s*=\s*\"text\/javascript\"\s*\>\w+\<\/\bscript\b\>

Java:怎样使用正则从url中匹配出ip和端口呢

例如:
http://127.0.0.1:8080
使用正则匹配出127.0.0.1和8080,而不使用split()

匹配最后的8080似乎可以使用(?=pattern),但匹配127.0.0.1呢?或者说能否一次都匹配出来了?

参考技术A String regex="//(.*?):(.*)";
Pattern p=Pattern.compile(regex);
String t="://127.0.0.1:8080";
Matcher m=p.matcher(t);
while(m.find())
System.out.println(m.group(1));
System.out.println(m.group(2));
追问

您好:
为什么可以写作"//(.*?):(.*)"而不用写作"http://(.*?):(.*)"呢?希望您再和我说下

追答

那个前面的部分随意啦,考虑到可能是https之类的

追问

您好前辈,这种写法我没见过,还可以从中间开始匹配吗?呜呜呜

追答

(.*?)是非贪婪的任意字符匹配

本回答被提问者采纳
参考技术B String reg = "((\\d+\\.)3\\d+)\\:(\\d+)";
String url = "";
String ip = url.replaceAll(reg, "$1");
String port = url.replaceAll(reg, "$3");

以上是关于js正则匹配,怎样才能匹配到需要的js呢的主要内容,如果未能解决你的问题,请参考以下文章

js正则匹配总结

JS Pig诗匹配子字符串与正则表达式

如何用正则表达式在JS中匹配出相应的拓展名?

js中正则式匹配问题

js 正则获取匹配部分最后一个内容

Js 正则匹配