2012-04-27 80 views
0

我找了一些代码,发现了以下的正则表达式:这个正则表达式究竟做了什么?

var querystring = querystring.replace(/[^&]+=\.?(?:&|$)/g, '') 

这是取查询字符串和更换,以与符号或问号以空格开头的所有值?有没有更多的事情发生在我看不到的地方?

你是合乎逻辑的解释是非常感谢和帮助获得更多的理解正则表达式。谢谢!

+0

这将删除所有匹配/[^&]+=\.?(?:&|$)/g(第二个参数是空字符串而不是空格)的字符串。 – GillesC 2012-04-27 10:59:26

+0

为什么querystring被搜索/替换并定义在同一行上? – 2012-04-27 11:03:36

+0

它在表单处理脚本上,查询字符串在我上面发布的行之前被序列化:'var querystring = $(this).serialize();'我应该这么说。 – 2012-04-27 11:06:17

回答

3

这似乎从查询字符串,其值是除去那些参数:

  1. 等于.

例如:

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

我看到,它正在清理字符串中的空值。优秀的答复,非常感谢!干杯! – 2012-04-27 12:02:32

2

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

=文字 “=” 字符

\.?一个可选的 “”

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

将是例如匹配

Foobar =。 &
A =