正则表达式字符串不包含?

时间:2015-03-26 09:45:18

标签: java regex

我试图创建正则表达式,找到包含以下内容的文字:

  1. src
  2. .js
  3. 并且不包含问号'?'在同一时间。

    例如,我希望我的正则表达式匹配:

    src="scripts/test.js"
    

    并且不匹配:

    src="Servlet?Template=scripts/test.js" 
    

    因为它包含问号标记。

    任何人都可以给我相应的正则表达式吗?

    非常感谢

2 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式:

/\bsrc=(?!.*?\?).+?\.js\b/i

(?!.*?\?)为负面预测,表示输入字符串中?后面有src=时匹配失败。

答案 1 :(得分:1)

您似乎想要parse/make changes to HTML with regex,但由于您使用的是JavaScript,因此您已经拥有了一个功能齐全的DOM解析器。

以下内容如何:

var scripts = document.querySelectorAll('script[src]');

for (var i = 0; i < scripts.length; i++) {
    var src = scripts[i].getAttribute('src');

    if (/\.js$/.test(src) && src.indexOf('?') === -1) {
        alert(src);
    }
}

示例jsFiddle here