【问题标题】:checking a pattern present in a string using javascript使用 javascript 检查字符串中存在的模式
【发布时间】:2010-11-08 14:55:36
【问题描述】:

如何使用 javascript 检查字符串中是否存在 url 或 url 模式。

<script language="javascript">
var str="http://localhost/testprj?test=123213123";
var s=location.href;
if(s.match('/http://localhost/testprj?test=1232/'){
    alert('welcome!!');
}
</script>

我需要检查 url 模式。

完整代码

<html>
<head>
</head>
    <body>
<style>
.active{
    color:#009900;
    font-weight:bold;
}
</style>

    <div id="menu">
    <ul><li>
    <ul><li>    <a href="html1.html">0</a>
        <a href="html.html" >1</a>
        <a href="2">2</a>
        </li>
    </ul></li>
    </ul>
    </div>

    <script language="javascript">

        var c=document.getElementById('menu').getElementsByTagName('a').length;
        var v=document.getElementById('menu').getElementsByTagName('a');
        var s=location.href;
        //alert(s.match('html'));
        for(var i=0;i<c;i++){
            //alert('href'+v[i].className);
            if(v[i].href==location.href){
                v[i].className='active';
            }

        }

    </script>   


    </body>
</html>

这工作正常,但如果获取参数导致一些问题...

喜欢 page.php?page=userlist 工作正常

但是

点赞 page.php?page=userlist&id=121221

这是基本链接网址 链接

【问题讨论】:

  • 在完整的代码中,我没有看到任何 URL 正则表达式(按照我们建议的内容)。但是,如果我理解“获取参数会导致一些问题”正确,您可能需要对正则表达式进行一些服务器端 (PHP) 转义。

标签: javascript regex url


【解决方案1】:
/http:\/\/localhost\/testprj\?test=1232/.test(s)

【讨论】:

    【解决方案2】:

    对于模式检查,您需要查看regular expressions

    您要检查什么特定模式?如果你只是想检查一个字符串是否是一个 URL,下面的代码应该做:

    var myString = "http://blah.com/helloworld/";
    if (myString.match(/http:\/\//)) {
        alert("'myString' is a URL.");
    }
    

    史蒂夫

    【讨论】:

      【解决方案3】:

      我认为您只是遇到了一些小的语法问题:

      var re = /http:\/\/localhost\/testprj\?test=1232/
      var s=location.href;
      if(s.match(re)) { 
        alert('welcome!!'); 
      } 
      

      【讨论】:

      • /http:\/\/localhost\/testprj\?test=1232/ 我不能这样使用。因为,请检查我的问题,我会更新
      【解决方案4】:

      请注意,正则表达式是 javascript 中自己的数据类型:没有引号或任何东西,只有 / 分隔符

      【讨论】:

        【解决方案5】:

        是的,我终于找到了解决方案 我使用了函数

        for(var i=0;i<len;i++){
                if(strstr(url,a[i].href)) {
                    a[i].className='active';
                }
            }
        
            function strstr( url, href) {
                var pos = 0;
                url += '';
                pos = url.indexOf( href );
                if (pos == -1) {
                    return false;
                } 
                else{
                    if(strcmp(url,href)==0)
                       return 1;
               }
        
            }
            function strcmp ( str1, str2 ) {
               return ( ( str1 == str2 ) ? 0 : ( ( str1 > str2 ) ? 1 : -1 ) );
            }
        

        像这样,它工作正常!!!

        谢谢

        【讨论】:

        • 虽然看起来没问题,但使用正则表达式是“使用 javascript 检查字符串中存在的模式”问题的正确答案,因为此函数只能检查 url 中出现的子字符串。对于子字符串检查的具体情况,已经发布了一个好的问题和答案:stackoverflow.com/questions/1789945/…
        猜你喜欢
        • 2016-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-28
        • 1970-01-01
        • 2020-09-06
        • 2010-12-16
        相关资源
        最近更新 更多