[英]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>
有一個很好的 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.