正则表达式匹配给定路径的所有有效URL变体

时间:2016-07-21 04:03:22

标签: javascript php regex

我正在努力使用正则表达式,我希望匹配路径的所有“有效”变体。

我对有效的定义是它后跟一个可选的斜杠,可选的查询字符串或单个'?

它需要在PHP和JavaScript中工作,因此无法正面/负面看待。

这里有一个修补的起点 http://regexr.com/3drov

在撰写本文时,我已经^\/page-title\/?(?=\?).*$我认为\/?允许我匹配前两行,作为可选的斜杠。但我想我现在感到很困惑。

我尝试输入条件(?(?=)then|else)类型的东西,我认为它在JS中受到支持但是从regexr.com获得语法错误

所以,任何帮助都会非常感激。谢谢!

这些应匹配输入:/ page-title

/page-title
/page-title/
/page-title?
/page-title/?
/page-title?foo
/page-title/?foo=bar

这些不应该

/page-title/foo/
/page-title-foo-bat

更新

我没有意识到JavaScript不支持经典的条件语法。阅读此帖(I would like to mimick conditionals in javascript regex)后,我似乎已将其与^\/page-title\/?((?=\?).*|)$

配合使用

保存更新以在此处测试:http://regexr.com/3drq0

3 个答案:

答案 0 :(得分:1)

我在我的积极前瞻中使用否定前瞻来否定任何附加DWORD value; DWORD size = sizeof(DWORD); //after this executes, value should contain the DWORD data of the specified registry key/valuename LONG result = RegGetValue( HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Windows", "GDIProcessHandleQuota", RRF_RT_REG_DWORD | RRF_SUBKEY_WOW6464KEY, NULL, &value, &size); if (result != ERROR_SUCCESS) { ... } 的选项,请检查这是否适合您:\

DEMO

答案 1 :(得分:1)

这应该这样做:

^\/page-title[\/\?]?(\?[^\/]*)?$

或者

^\/page-title(\/|\?)?(\?[^\/]*)?$

答案 2 :(得分:1)

也许这就是:

^\/page-title\/?(\?.*)?$

开始/page-title

可选/

可选(?后跟任何内容或任何内容)

http://regexr.com/3drpb