Regex 注册Ex以匹配a?或Unicode%3d

Regex 注册Ex以匹配a?或Unicode%3d,regex,Regex,我有一个与url查询字符串中的问号匹配的表达式,我发现自己需要扩展该表达式,以适应我试图读取的url包含问号%3d的unicode等价物的情况 表达式是 var regexS = "[\\?&]" + name + "=([^&#]*)"; 从我对RegEx所知甚少的情况来看,我认为这可能有效 var regexS = "[\\?&]|[\\%3d&]" + name + "=([^&#]*)"; 感谢您的帮助假设Javascript用于字符串转义 在

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

表达式是

var regexS = "[\\?&]" + name + "=([^&#]*)";
从我对RegEx所知甚少的情况来看,我认为这可能有效

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

感谢您的帮助

假设Javascript用于字符串转义

“[\\?&][\\%3d&][\\%3d&]”+name+“=([^&\\\]*)”
中,请注意

  • 连接(
    abc
    )优先于交替(
    a | b | c
    )和
  • [\\%3d&]
    表示“百分比、3、d或符号”(字符类)
  • 的转义形式是%3F,而不是%3D.%3D表示
    =
    。看
  • 第一个字符类中的符号与
    www.example.com?q1=v1&q2=v2
    中的
    匹配。也许您也希望允许转义符号。它的转义形式是%26
您可能是指
“([\\?&]\\%3f\\%26)”+name+“=([^&\\]*)”


还要注意的是,
在字符类中没有特殊意义,也不需要转义:
“([?&]|%3f |%26)”+name+“=([^&&]*)”

如果url包含
%3d
,则(通常)不应将其解释为查询分隔符。这就是它被转义的原因。请注意
%3d
表示
=
<代码>&
%3f
感谢您的回复。理解regEx的人总是让我惊讶不已。我是usinghttp://www.nvcc.edu/home/drodgers/ceu/resources/test_regexp.asp 要测试表达式并使用([?&]\\%3d&)测试www.mydomain.com?q=123测试为true,但www.mydomain.com%3dq=123测试为false。对%3f的观察很好,我看到的是查询字符串的错误部分。谢谢你的帮助,它起作用了!