Javascript 如何从匹配中排除模式中的任何字符串?
我需要编写一个正则表达式,它将匹配那些在其URL中的任何地方都有特定查询字符串名称/值对的URL。应匹配所有其他查询字符串名称以及具有相同名称的所有其他查询字符串值。同一目录(或子目录)中的其他页面不应匹配 例如,假设我需要匹配的基本URL为: http://www.domain.com/directory/ 然后匹配此URL:Javascript 如何从匹配中排除模式中的任何字符串?,javascript,regex,actionscript-3,url,query-string,Javascript,Regex,Actionscript 3,Url,Query String,我需要编写一个正则表达式,它将匹配那些在其URL中的任何地方都有特定查询字符串名称/值对的URL。应匹配所有其他查询字符串名称以及具有相同名称的所有其他查询字符串值。同一目录(或子目录)中的其他页面不应匹配 例如,假设我需要匹配的基本URL为: http://www.domain.com/directory/ 然后匹配此URL: (似乎[a-z]比不允许的组更强。) 当字符串存在于模式中的任何位置时,如何防止匹配 (这将在ActionScript3/ECMAScript3正则表达式引擎中使
(这将在ActionScript3/ECMAScript3正则表达式引擎中使用。)是否有任何理由需要使用正则表达式?为什么不只是简单的字符串搜索呢?它做完全相同的事情,但更容易理解
myString.search("fred=f");
泰勒。编辑:更改了表达式。以前的版本限制为99个字符 EDIT2:改进了表达式,现在匹配更多案例 我做过这样的东西
(domain.com/directory/.*fred=(?!f$)(?!f&).*)|(domain.com/directory/$)|(domain.com/directory/\?(?!.*fred=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
http://www.domain.com/directory/?foo=bar
http://www.domain.com/directory/?fred=f
http://www.domain.com/directory/?fred=f&a=b
http://www.domain.com/directory/?a=b&fred=f
myString.search("fred=f");
(domain.com/directory/.*fred=(?!f$)(?!f&).*)|(domain.com/directory/$)|(domain.com/directory/\?(?!.*fred=f).*)
http://www.domain.com/directory/(?!.*(\?|&)fred=f($|&|#))(\?|#|$)