【发布时间】:2011-04-04 21:45:15
【问题描述】:
我需要编写一个正则表达式来匹配那些 not 在其 URL 中具有特定查询字符串名称/值对 anywhere 的 URL。所有其他查询字符串名称和所有其他具有相同名称的查询字符串值都应匹配。不应匹配同一目录(或子目录)中的其他页面。
例如,假设我需要匹配的基本 URL 是:
http://www.domain.com/directory/
我需要从匹配项中排除的查询字符串名称和值是:
弗雷德=f
到目前为止,我有:
http://www\.domain\.com/directory/(?!(\?|&)fred=f$)
哪些匹配:
- http://www.domain.com/directory/
- http://www.domain.com/directory/?fred=a
- http://www.domain.com/directory/?fred=foo
但不是:
问题是这个正则表达式也匹配:
如果我改用这个正则表达式:
(?i)http://www\.domain\.com/directory/[a-z]*(?!(\?|&)fred=f$)
那么这个网址就匹配上了:
(好像[a-z]比disallow组强。)
当字符串存在于模式中的任何位置时,如何防止匹配?
(这将在 ActionScript3/ECMAScript3 正则表达式引擎中使用。)
【问题讨论】:
标签: javascript regex actionscript-3 url query-string