0

我有一个与 url 查询字符串中的问号匹配的表达式,我发现自己需要扩展表达式以适应我尝试读取的 URL 包含与问号 %3d 等效的 unicode 的情况

表达式是

var regexS = "[\\?&]" + name + "=([^&#]*)";

根据我对 RegEx 的了解,我认为这可能有效

var regexS = "[\\?&]|[\\%3d&]" + name + "=([^&#]*)";

谢谢您的帮助

4

1 回答 1

1

假设 Javascript 用于字符串转义。

"[\\?&]|[\\%3d&]" + name + "=([^&#]*)"注意

  • 串联 ( abc) 优先于交替 ( a|b|c) 并且
  • [\\%3d&]表示“百分比或 3 或 d 或 &”(字符类)。
  • 的转义形式?是 %3F,而不是 %3D。%3D 表示=. 参见维基百科:百分比编码
  • 第一个字符类中的 & 符号存在以匹配&q2=. www.example.com?q1=v1&q2=v2也许您也想允许转义的&符号。它的转义形式是 %26

你可能的意思是"([\\?&]|\\%3f|\\%26)" + name + "=([^&#]*)"相反。

另请注意,?在字符类中没有特殊含义,也不需要转义:"([?&]|%3f|%26)" + name + "=([^&#]*)"

于 2012-10-27T06:38:23.347 回答