我有一个表达式与url查询字符串中的问号相匹配,我发现自己需要扩展表达式以适应我尝试读取的URL包含与问题相同的unicode的情况标记%3DReg Ex匹配?或Unicode%3d
表达是
var regexS = "[\\?&]" + name + "=([^&#]*)";
从什么非常少,我知道正则表达式的我想这可能工作
var regexS = "[\\?&]|[\\%3d&]" + name + "=([^&#]*)";
感谢您的帮助
我有一个表达式与url查询字符串中的问号相匹配,我发现自己需要扩展表达式以适应我尝试读取的URL包含与问题相同的unicode的情况标记%3DReg Ex匹配?或Unicode%3d
表达是
var regexS = "[\\?&]" + name + "=([^&#]*)";
从什么非常少,我知道正则表达式的我想这可能工作
var regexS = "[\\?&]|[\\%3d&]" + name + "=([^&#]*)";
感谢您的帮助
假设用于字符串转义的Javascript。
在"[\\?&]|[\\%3d&]" + name + "=([^&#]*)"
注意到
abc
)上交替(a|b|c
)具有优先级和[\\%3d&]
意味着 “百分比或3或d或符号”(字符类)。?
的转义形式是%3F,而不是%3D。 %3D表示=
。请参阅wikipedia: percent encoding&q2=
中的www.example.com?q1=v1&q2=v2
匹配。也许你想允许逃脱的&符号。其转义形式为%26您可能意思是"([\\?&]|\\%3f|\\%26)" + name + "=([^&#]*)"
。
还要注意的是?
有一个字符类中没有特殊含义,也不需要进行转义:"([?&]|%3f|%26)" + name + "=([^&#]*)"
感谢您的回应。了解regEx的人永远不会惊叹我。我使用http://www.nvcc.edu/home/drodgers/ceu/resources/test_regexp.asp来测试表达式并使用([?&] | \\%3d&)来测试www.mydomain.com?q= 123测试正确,但www.mydomain.com%3dq = 123测试错误。 –
@MarkHollas谢谢你的例子。答案已更新。 –
好好关注%3f我正在查看查询字符串的错误部分。感谢您的帮助! –
如果URL包含'%3d',(一般),它不应该被解释为查询分隔符。这就是它逃脱的原因。 –
你试过了吗? –
请注意,'%3d'的意思是'='。 '&'是'%3f' –