Javascript 这个正则表达式到底在做什么?

Javascript 这个正则表达式到底在做什么?,javascript,regex,Javascript,Regex,我正在查看一些代码,发现以下正则表达式: var querystring = querystring.replace(/[^&]+=\.?(?:&|$)/g, '') 这是使用查询字符串并用空格替换所有以“与”或“问号”开头的值吗?这里还有我看不到的事情吗 您的逻辑解释是非常感谢,并有助于获得更多的了解正则表达式。谢谢 [^&]+一个或多个非“&”字符 =文字“=”字符 \.?一个可选的“.” (?:&|$)一个“&”字符或字符串的结尾 你会匹配吗 Foobar=.& A= [

我正在查看一些代码,发现以下正则表达式:

var querystring = querystring.replace(/[^&]+=\.?(?:&|$)/g, '')
这是使用查询字符串并用空格替换所有以“与”或“问号”开头的值吗?这里还有我看不到的事情吗


您的逻辑解释是非常感谢,并有助于获得更多的了解正则表达式。谢谢

[^&]+
一个或多个非“&”字符

=
文字“=”字符

\.?
一个可选的“.”

(?:&|$)
一个“&”字符或字符串的结尾

你会匹配吗

Foobar=.&
A=


[^&]+
一个或多个非“&”字符

=
文字“=”字符

\.?
一个可选的“.”

(?:&|$)
一个“&”字符或字符串的结尾

你会匹配吗

Foobar=.&
A=


它似乎从查询字符串中删除了这些参数,其值为:

  • 空的
  • 等于
  • 例如:

    "remove1=&remove2=.&keep1=..&keep2=a&keep3=b".replace(/[^&]+=\.?(?:&|$)/g, '')
    // returns "keep1=..&keep2=a&keep3=b"
    

    它似乎从查询字符串中删除了这些参数,其值为:

  • 空的
  • 等于
  • 例如:

    "remove1=&remove2=.&keep1=..&keep2=a&keep3=b".replace(/[^&]+=\.?(?:&|$)/g, '')
    // returns "keep1=..&keep2=a&keep3=b"
    

    这将删除与/[^&]+=\.?(?:&|$)/g(第二个参数是空字符串而不是空格)匹配的所有字符串。为什么要在同一行上搜索/替换和定义querystring?它位于表单处理脚本上,querystring在我上面发布的行之前序列化:
    var querystring=$(This).serialize();
    我应该这么说。匹配
    abc=.&
    a=
    (假设最后匹配),
    ==
    (假设最后匹配)和
    ,但不是
    &abc=.
    =
    abc=.&
    (假设最后匹配)。@Neil看来它正在从它处理的表单中清除空值,这听起来正确吗?这将删除所有与/[^&]+=\.?(?:&$)/g匹配的字符串(第二个参数是空字符串而不是空格),仅此而已。为什么要在同一行上搜索/替换和定义querystring?它位于表单处理脚本上,querystring是在我在上面发布的行之前序列化的:
    var querystring=$(this.serialize()
    我应该这么说。匹配
    abc=.&
    a=
    (假设最后匹配),
    ==
    (假设最后匹配)和
    ,但不是
    &abc=.
    =
    abc=.&
    (假设最后匹配)。@Neil看来它正在从它处理的表单中清除空值,听起来对吗?我明白了,它正在清除字符串中的空值。非常感谢您的回复!干杯我明白了,它正在清除字符串中的空值。非常感谢您的回复!干杯