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

Java 正则表达式字符串不包含?,java,regex,Java,Regex,我正在尝试创建一个正则表达式,它查找包含以下内容的文本: src .js 并且不同时包含问号“?” 例如,我希望我的正则表达式匹配: src="scripts/test.js" 和不匹配: src="Servlet?Template=scripts/test.js" 因为它包含一个问号 有人能给我合适的正则表达式吗 非常感谢您可以使用此正则表达式: /\bsrc=(?!.*?\?).+?\.js\b/i (?!.*?\?)是负前瞻性的,这意味着当输入字符串中有src=之后的时,匹配失败。

我正在尝试创建一个正则表达式,它查找包含以下内容的文本:

  • src
  • .js
  • 并且不同时包含问号“?”

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

    src="scripts/test.js"
    
    和不匹配:

    src="Servlet?Template=scripts/test.js" 
    
    因为它包含一个问号

    有人能给我合适的正则表达式吗


    非常感谢

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

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

    (?!.*?\?)
    是负前瞻性的,这意味着当输入字符串中有
    src=
    之后的
    时,匹配失败。

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

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

    (?!.*?\?)
    是负前瞻性的,这意味着当输入字符串中有
    src=
    之后的
    时,匹配失败。

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

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

    (?!.*?\?)
    是负前瞻性的,这意味着当输入字符串中有
    src=
    之后的
    时,匹配失败。

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

    /\bsrc=(?!.*?\?).+?\.js\b/i
    
    (?!.*?\?)
    是负前瞻的,这意味着当输入字符串中的
    src=
    后面有一个
    时,匹配失败。

    您似乎想这样做,但由于您使用的是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);
        }
    }
    
    var scripts=document.querySelectorAll('script[src]');
    对于(var i=0;i
    示例jsFiddle。

    您似乎想这样做,但由于您使用的是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);
        }
    }
    
    var scripts=document.querySelectorAll('script[src]');
    对于(var i=0;i
    示例jsFiddle。

    您似乎想这样做,但由于您使用的是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);
        }
    }
    
    var scripts=document.querySelectorAll('script[src]');
    对于(var i=0;i
    示例jsFiddle。

    您似乎想这样做,但由于您使用的是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);
        }
    }
    
    var scripts=document.querySelectorAll('script[src]');
    对于(var i=0;i


    示例jsFiddle.

    这是我可能更喜欢阅读
    if(str.indexOf('src')!=-1&&str.indexOf('.js')!=-1&&str.indexOf('?'))==-1{…}
    的时候之一。我希望我能使用它,但是我处理的是一个完整的模板文本,所以它可能包含几个带.js的'src',我想更改每次出现的src。这是我可能更喜欢阅读
    if(str.indexOf('src')!=-1&&str.indexOf('js')!=-1&&str.indexOf('?')=-1{…}
    。我希望我能使用它,但是我处理的是一个完整的模板文本,所以它可能包含几个带.js的'src',我想更改每次出现的src。这是我可能更喜欢阅读
    if(str.indexOf('src')!=-1&&str.indexOf('js')!=-1&&str.indexOf('?')=-1{…}
    。我希望我能使用它,但是我处理的是一个完整的模板文本,所以它可能包含几个带.js的'src',我想更改每次出现的src。这是我可能更喜欢阅读
    if(str.indexOf('src')!=-1&&str.indexOf('js')!=-1&&str.indexOf('?')=-1{…}
    。我希望我能使用它,但是我处理的是一个完整的模板文本,所以它可能包含几个带有'.js'的'src',我想更改每次出现的src,谢谢!我试过了,但它通过了这篇课文,当然通过了。您的规范要求它与之匹配。@user2484927:为什么它不匹配
    ?我在Java、模式和匹配器类中使用:
    Pattern p=Pattern.compile(“/=\\bsrc=(?!.\\\?)。+?\.js\\b”);匹配器m=p.Matcher(strTemplateText)
    m.find()
    返回false,即使strTemplatetext包含
    @anubhava@PhylogenesisJava,您问题中的标记表示JavaScript。他们是完全不同的语言。谢谢!我试过了,但它通过了这篇课文,当然通过了。您的规范要求它与之匹配。@user2484927:为什么它不匹配
    ?我在Java、模式和匹配器类中使用:
    Pattern p=Pattern.compile(“/=\\bsrc=(?!.\\\?)。+?\.js\\b”);匹配器m=p.Matcher(strTemplateText)
    m.find()
    返回false,即使strTemplatetext包含
    @anubhava@PhylogenesisJava,您问题中的标记表示JavaScript。他们是完全不同的语言。谢谢!我试过了,但它通过了这篇课文,当然通过了。您的规范要求它与之匹配。@user2484927:为什么它不匹配
    ?我在Java、模式和匹配器类中使用:
    Pattern p=Pattern.compile(“/=\\bsrc=(?!.\\\?)。+?\.js\\b”);匹配器m=p.Matcher(strTemplateText)
    m.find()
    返回false,即使strTemplatetext包含
    @anubhava@PhylogenesisJava,您问题中的标记表示JavaScript。他们是完全不同的语言。谢谢!我试过了,但它通过了这篇课文,当然通过了。哟