PHP 正则表达式 preg_match 识别 url 模式
PHP regex preg_match to identify url pattern
有没有办法让规则只允许示例 1 和 3 而不是全部 4 个?
/^(en\/|)([\d]{1,3})([-])(.+?)([\/])$/
示例:
- 12 个博客/
- 12-blog/blog2/
- en/12-blog/
- zh/12-blog/blog2/
您可以为 en/
使用可选部分,然后匹配 1-3 位数字,-
并使用取反字符 class 匹配非 /
1+ 次].
请注意,您可以省略 [\d]
、[-]
和 [\/]
的方括号。如果您选择与 /
不同的分隔符,则不必转义正斜杠。
^(?:en/)?\d{1,3}-[^/]+/$
部分
^
字符串开头
(?:en/)?
可选匹配 en/
\d{1,3}
匹配1-3位数字
-
字面匹配
[^/]+/
匹配除 /
之外的任何字符 1+ 次
$
字符串结束
有没有办法让规则只允许示例 1 和 3 而不是全部 4 个?
/^(en\/|)([\d]{1,3})([-])(.+?)([\/])$/
示例:
- 12 个博客/
- 12-blog/blog2/
- en/12-blog/
- zh/12-blog/blog2/
您可以为 en/
使用可选部分,然后匹配 1-3 位数字,-
并使用取反字符 class 匹配非 /
1+ 次].
请注意,您可以省略 [\d]
、[-]
和 [\/]
的方括号。如果您选择与 /
不同的分隔符,则不必转义正斜杠。
^(?:en/)?\d{1,3}-[^/]+/$
部分
^
字符串开头(?:en/)?
可选匹配en/
\d{1,3}
匹配1-3位数字-
字面匹配[^/]+/
匹配除/
之外的任何字符 1+ 次
$
字符串结束