簡體   English   中英

JavaScript 正則表達式匹配

[英]JavaScript regular expression match

考慮以下:

var params = location.search.match(/=([\w\d-]+)&?/g);
console.log(params);

output 是:

["=7&", "=31500&", "=1"]

我不會有任何符號,只有數字或單詞,所以我設置了括號,但它不起作用。 那么我該怎么做呢?

你得到查詢字符串參數了嗎? 我認為這就是您想要的(盡管它不使用正則表達式)。

<script type="text/javascript">
<!--
function querySt(ji) {
    hu = window.location.search.substring(1);
    gy = hu.split("&");
    for (i=0;i<gy.length;i++) {
        ft = gy[i].split("=");
        if (ft[0] == ji) {
            return ft[1];
        }
    }
}

var koko = querySt("koko");

document.write(koko);
document.write("<br>");
document.write(hu);
-->
</script>

參考: http://ilovethecode.com/Javascript/Javascript-Tutorials-How_To-Easy/Get_Query_String_Using_Javascript.shtml

有一個很好的 javascript function 叫做gup() ,它使這種事情變得簡單。 這是 function:

function gup( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

和示例用法:

var myVar = gup('myVar');

因此,如果您的查詢字符串如下所示: ?myVar=asdf

myVar 將返回“asdf”。

.match方法返回整個匹配的字符串,而不是您用括號定義的任何分組。

如果您只想返回正則表達式中的分組,則必須多次使用.exec方法,並從結果數組中提取匹配的組:

var search = location.search, 
    param = /=([\w\d-]+)&?/g, 
    params = [],
    match;
while ((match = param.exec(search)) != null) {
    params.push(match[1]);
}
console.log(params);

這是因為g標志用於正則表達式。 每次在param正則表達式上調用.exec時,它的lastIndex屬性都會設置為下一個匹配的 ZE83AED3DDF4667DEC0DAAAACB2BB3BE0BZ ,這反過來又確保對.exec的下一次調用在下一個匹配時開始搜索。 結果數組包含索引 0 處的整個匹配字符串,然后是后續位置的每個匹配組。 因此,您的組作為數組的索引 1 返回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM