首页 > 技术文章 > 一行代码提取url中querystring的某个key的值

subendong 2017-09-20 17:27 原文

var itemdata = "OrderFilter=0&ProjectTag=15&DateType=0";
var projectTag = itemdata.replace(/.*projecttag=([\d]+).*/gi, "$1");

重点就是第二行,用匹配到的括号里的值替换整个文本。

如果用传统方法,肯定要先split"&"符号,再split"="符号,然后再取值。

这样多好,就一行代码,如果说正则效率不高或有问题,还可以优化。

重要的是这种思路和技巧。此方法仅供参考,具体怎么写,要根据自己的url的querystring而定。

 

另外提供一个contains的方法

    //自定义contains方法
    Array.prototype.contains = function (obj) {  
        var i = this.length;  
        while (i--) {  
            if (this[i] == obj) {  
                return true;  
            }  
        }  
        return false;  
    }
    
    var projectTags = [1,2,15,14,9,8,3,11,13,16,5,4,6,7];
    var isInProjectTags = projectTags.contains(15);

 .net可以这么写:

            var str = "asjdflaksj*18688888888*asdf";
            var result = Regex.Replace(str, @"(1[\d]{10})", "<a href=\"tel:$1\">$1</a>");//<a href="tel:18688888888">拨号</a>  

java可以这么写:

        String str = "asdfadf;TKK='427735.4060570411';sdfasfd";
        String result = str.replaceAll(".*TKK='(.*)';.*", "$1");//提取TKK的值

 

-----------------------------------------------------------------------------------------------------------

 

需求:提取下面括号里面的英文字符

var str = "繁体中文(zh-tw)";
var text = str.replace(/.*\((.*)\)/, "$1");

需求:提取红色内容,<p>的个数不固定

<table class="infobox vcard" style="width:22em"><tr><td><div>sssssssssssssssssss</div></td></tr></table>
<p>a</p>
<p>b</p>
<p>c</p>
<div id="toc" class="toc">ddddddddddddd</div>

<!doctype html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF8">
    <title></title>
    <script src="http://x.x.x.x/Content/js/jquery-2.1.1.min.js"></script>
</head>
<body>
    <div class="abc">
        <div></div>
        <p></p>
        <table class="infobox vcard" style="width:22em"><tr><td><div>sssssssssssssssssss</div></td></tr></table>
        <p>a</p>
        <p>b</p>
        <p>c</p>
        <div id="toc" class="toc">ddddddddddddd</div>
        <div id="fdfdf"></div>
        <p></p>
        <p></p>
        <p></p>
    </div>
    <script type="text/javascript">
        $(document).ready(function () {
            var str = $(".abc").html();
            //var str = '<table class="infobox vcard" style="width:22em">xxxx</table><p>a</p><p>b</p><p>c</p><div id="toc" class="toc">';
            var str = str.replace(/([\s\S]*\<\/table\>)([\s\S]*)(\<div.*id="toc"[\s\S]*)/gi, "$2");

            console.log(str);
        });
    </script>
</body>
</html>

 

推荐阅读