preg_match为url。正则表达式

时间:2013-03-21 21:49:26

标签: php regex validation

我有一个正则表达式,用于验证特定网址,但它并没有真正起作用。我想验证这样的网址-----> https:// example.co.nz/#![RANDOM_KEYS_HERE]。
我想只用https做。最重要的是,用户的输入需要匹配https:// example.co.nz/#!但在#!之后,用户可以放任何他喜欢的东西。

这是代码: 我知道代码是fked up xD我对lol

有基本的了解
#^https://example+\.[co\.nz][a-z0-9-_.]+\.[a-z]{2,4}#i

如果有人能帮我做,那就太好了!谢谢!

4 个答案:

答案 0 :(得分:1)

呃......甚至没有关闭。你的正则表达式如下:

  • 从字符串的开头开始......
  • 按字面意思匹配https://exampl
  • 匹配一个或多个e
  • 匹配文字.
  • 匹配其中任何一个:cnoz.
  • 匹配以下一项或多项:a-z0-9-_.
  • 匹配文字.
  • 匹配2到4个字母

这与您正在寻找的完全不同。毕竟,我认为你不希望这一点通过:

https://exampleeeeeeeeeeee.complete.and.total.failure.-_-.lol

相反,试试这个:

(^https://example\.co\.nz/#!(.*))

这个正则表达式如下:

  • 从字符串的开头开始......
  • 按字面意思匹配https://example.co.nz/#!
  • 此后捕获所有内容

答案 1 :(得分:0)

if (preg_match('%^https://example\.co\.nz/#!(.+)$%i', $subject)) {
    # Successful match
} else {
    # Match attempt failed
}

或者你可以用你的[RANDOM_KEYS_HERE]部分

if (preg_match('%^https://example\.co\.nz/#!(.+)$%i', $subject, $regs)) {
    $result = $regs[0];
} else {
    $result = "";
}

答案 2 :(得分:0)

试试这个:

^https:\/\/example\.co\.nz\/\#\!(.*)$

最后的括号将进行子表达式匹配,以便您可以提取ID。

if (preg_match('/^https:\/\/example\.co\.nz\/\#\!(.*)$/', $searchString, $matches)) {
    $id = $matches[1];
}

答案 3 :(得分:0)

你不需要正则表达式。你只需要找出字符串是否以某个子字符串开头。检查一下:

if(strpos($url, 'https://example.co.nz/#!')===0)
{
    echo 'url is OK';
}
else
{
    echo 'url is wrong';
}

http://www.php.net/manual/en/function.strpos.php

我希望这会有所帮助。