繁体   English   中英

javascript正则表达式可选字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM