正则表达式匹配URL中的字符串

时间:2018-05-04 08:36:23

标签: regex

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/regionyhttp://example.com/regioni

我的正则表达式:

(regiony\/?|regiuni\/?)

但这不起作用。我匹配所有

3 个答案:

答案 0 :(得分:0)

如果您只想找到段after http://example.com/,那么您可以使用:

(region[iy][-/]?)|(regiuni[/]?)

这应涵盖所有(六种)可能性: regioni,regiony,regioni /,regiony /,regiuni,regiuni / 。添加了 regiony-,regioni -

答案 1 :(得分:0)

\/regi(?:uni|ony)(?=$|\/)

或者使用

\/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;
}

Test Php