[英]javascript regular expression optional character
我想使用正則表達式替換url參數。
我的代碼:
query = window.location.search;
query.replace(new RegExp(query.match('f=(.*)&?')[1],'g'),'2');
但是可能有兩種情況,
第一:
查詢可以是“?f = 23”
第二:
查詢可以是“?f = 23&id = 1”,
我的代碼適用於第一種情況,但不適用於第二種情況。
如何針對這兩種情況替換查詢?
function control(parameter,value) {
var newUrl;
var url = window.location.href.split('?')[0];
var query = window.location.search;
var check = query.indexOf('f');
if (check == -1) {
var qCheck = query.indexOf('?');
if (qCheck == -1) {
query = query+'?'+parameter+'='+value;
} else {
query = query+'&'+parameter+'='+value;
}
} else {
var c = query.indexOf('&');
if(c == -1) {
query = query.replace(new RegExp(query.match(parameter+'=(.*)')[1],'g'),value);
} else {
query = query.replace(new RegExp(query.match('f=(.*)&')[1],'g'),value);
}
}
history.pushState(null,null,url+query);
}
試試這個
/(f=)([^\s|&]+)/g
在JavaScript中的用法
'?f=23'.replace(/(f=)([^\s|&]+)?/g, '$12');
'?f=23&id=1'.replace(/(f=)([^\s|&]+)?/g, '$12');
'?a=22&f=24'.replace(/(f=)([^\s|&]+)?/g, '$12');
輸出:
?f=2
?f=2&id=1
?a=22&f=2
據我了解,您想將參數f
替換為值2,因此:
query = window.location.search;
query = query.replace( /f=(.*?)&?/g, 'f=2' );
.*?
使匹配不貪心。
這是您想要的:
query = window.location.search; // "?f=23&id=1"
query.replace( /(f=).*(&)/, '$1'+ '2' +'$2' );
> "?f=2&id=1"
query.replace( /(f=).*(&)/, '$1'+ 'something' +'$2' );
> "?f=something&id=1"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.