http://example.com/ru/regiony/
http://example.com/regiuni/
https://example.com/obshestvo/regiony-zastavili-ego-zhiti
http://example.com/obshestvo/regiony
我需要检查,如果在网址中我有链接:http://example.com/regiony/
或http://example.com/regioni/
或http://example.com/regiony
或http://example.com/regioni
我的正则表达式:
(regiony\/?|regiuni\/?)
但这不起作用。我匹配所有
答案 0 :(得分:0)
如果您只想找到段after http://example.com/
,那么您可以使用:
(region[iy][-/]?)|(regiuni[/]?)
这应涵盖所有(六种)可能性: regioni,regiony,regioni /,regiony /,regiuni,regiuni / 。添加了 regiony-,regioni - 。
答案 1 :(得分:0)
\/regi(?:uni|ony)(?=$|\/)
http://example.com/obshestvo的 / regiony 强>
\/regi(?:uni|ony)
匹配/ regiony或/ regiuni (?=$|\/)
字符串/行的结尾或/
必须遵循(正向前瞻)或者使用
\/regi(?:uni|ony)(?:$|\/)
包含尾部斜杠( / regiuni / )
答案 2 :(得分:0)
对于您的示例数据,您可以使用如下模式:
^http://.*/regi(?:on[iy]|uni)/?$
或者匹配中的示例网址:
^http?://example\.com.*/regi(?:on[iy]|uni)/?$
这将使用$
断言此模式regi(?:on[iy]|uni)/?
出现在行尾。您可以使用/
之类的另一个分隔符,例如~
,这样您就不必转义正斜杠。
例如:
$pattern = '~^http://.*/regi(?:on[iy]|uni)/?$~';
$string = "http://example.com/ru/regiony/";
if (preg_match($pattern, $string)) {
echo "Valid: $string" . PHP_EOL;
}