Javascript-如何正则化此模式。Can';我似乎不想做这件事

Javascript-如何正则化此模式。Can';我似乎不想做这件事,javascript,jquery,Javascript,Jquery,可能重复: 我“有”这个模式,但它没有给我我需要的东西,尽管它起作用了 var regex = new RegExp('\\b' + data.keyword + '(=[^&]*)?(&|$)',"gi"); 但以下正则表达式“是”我需要的,但我似乎无法在regex obj中使用它: /&动态空间(\=[^&])?(?=&$)^^动态空间(\=[^&])?(&$)/ 我试过:这不起作用- var regex = new RegExp('&' + data.keywo

可能重复:

我“有”这个模式,但它没有给我我需要的东西,尽管它起作用了

var regex = new RegExp('\\b' + data.keyword + '(=[^&]*)?(&|$)',"gi");
但以下正则表达式“是”我需要的,但我似乎无法在regex obj中使用它: /&动态空间(\=[^&])?(?=&$)^^动态空间(\=[^&])?(&$)/

我试过:这不起作用-

var regex = new RegExp('&' + data.keyword + '(=[^&]*)?|^' + data.keyword + '(=[^&]*)?&?',"gi");
我不明白为什么。所以上面的正则表达式应该去掉我传递的param(和vlaue)(data.keyword),并处理?和&无论该参数位于url中的哪个位置。它

那么,这场比赛会是什么?

www.someurl.com?关键字=foo

www.someurl.com?up=down&Keyword=foo

www.somurl.com?up=down&keyword=foo&left=right


等等。。。所以,如果我传入“关键字”作为我的动态参数,那么它将删除它及其关联的值。

在我看来,您想要的是通过JavaScript从请求中读取参数值,对吗

尝试使用以下方法:

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

取自。

如果需要查看生成的正则表达式的外观,只需调用
regex.toString()

如果你在你试过的那一个上这样做,你会得到:

/&dyanmicTxtHere(=[^&]*)?|^dyanmicTxtHere(=[^&]*)?&?/gi
基于此,您可以清楚地看到需要进行哪些更改以使其与您提供的正则表达式相似:

var regex = new RegExp('&' + data.keyword + '(\\=[^&])?(?=&|$)|^' + data.keyword + '(\\=[^&])?(&|$)', '');
如果我们调用
toString
,我们会得到:

/&dyanmicTxtHere(\=[^&])?(?=&|$)|^dyanmicTxtHere(\=[^&])?(&|$)/

如果这不起作用,请尝试准确解释您试图解析的内容。

显然,下面的内容不是正则表达式;但我认为它应该满足你的要求。它利用GET查询字符串中名称-值对的要求,并使用简单字符串和一些数组操作来检查传递URL中的各种(如果有)名称-值对:

function removeParam(url, param) {
    // checks for the existence of a '?' in the passed url:
    var queryAt = url.indexOf('?') + 1;
    /* function exits if:
       1. no 'url' parameter was passed,
       2. no 'param' parameter was passed in, or
       3. the 'queryAt' variable is false, or has a falsey value */
    if ((!url || !param) || !queryAt) {
        return false;
    }
    else {
        /* if the 'param' passed in wasn't found in the 'url' variable,
           the function exits, returning the original url (as no modification
           is required */
        if (url.indexOf(param) == -1) {
            return url;
        }
        else {
                /* gets the substring of the url from the first
                   character *after* the '?' */
            var all = url.substring(queryAt),
                // creates an array of the name and value pairs
                nameValues = all.split('&'),
                // creating a new array
                newNameValues = [],
                parts;
            // iterates through each name-value pair
            for (var i = 0, len = nameValues.length; i < len; i++) {
                // splits the name-value pair into two parts
                parts = nameValues[i].split('=');
                /* if the first part (the 'name' of the param) does not
                   matches what you're looking for then the whole name-value
                   pair is pushed into the 'newNameValues' array */
                if (parts[0] !== param) {
                    newNameValues.push(nameValues[i]);
                }
            }
            // returns the reconstructed URL
            return url.substring(0, queryAt) + newNameValues.join('&');
        }
    }
}
函数removeParam(url,param){
//检查传递的url中是否存在“?”:
var queryAt=url.indexOf(“?”)+1;
/*函数在以下情况下退出:
1.未传递“url”参数,
2.未传入“param”参数,或
3.“queryAt”变量为false,或值为false*/
if((!url | | |!param)| |!queryAt){
返回false;
}
否则{
/*如果在“url”变量中找不到传入的“param”,
函数退出,返回原始url(不作修改
是必需的*/
if(url.indexOf(param)=-1){
返回url;
}
否则{
/*从第一个url获取url的子字符串
“?”后面的*字符*/
var all=url.substring(queryAt),
//创建名称和值对的数组
nameValues=all.split('&'),
//创建新数组
newNameValues=[],
部分;
//遍历每个名称-值对
for(变量i=0,len=nameValues.length;i

.

你想从什么(排序)字符串中匹配什么?将原始问题与它匹配的内容编辑。为什么有人会否决我的问题?是否措辞不当?信息不足?有点蹩脚。那么这不公平,因为这不是为了获取值,这很容易(imho)。这是一个用于从url中删除特定名称和值的正则表达式。我不想“读取”参数,我希望能够删除一个参数及其值。我要删除的参数及其值可以动态决定。因此,我传入了我的paramToDelete和我的正则表达式(如上所述)将剥离它及其值。因此,您可以通过读取所有参数减去要排除的参数来轻松重建查询字符串。在我链接的问题中,还有其他函数可以一次检索所有参数。