0

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

这是代码:我知道代码是错误的 xD 我对此有基本的了解,哈哈

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

如果有人可以帮助我做到这一点,那就太好了!谢谢!

4

4 回答 4

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/#!
  • 之后捕捉一切
于 2013-03-21T21:55:43.850 回答
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 = "";
}
于 2013-03-21T21:56:29.043 回答
0

试试这个:

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

最后的括号将进行子表达式匹配,这应该允许您提取 ID。

if (preg_match('/^https:\/\/example\.co\.nz\/\#\!(.*)$/', $searchString, $matches)) {
    $id = $matches[1];
}
于 2013-03-21T21:56:53.747 回答
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

我希望这有帮助。

于 2013-03-21T21:58:23.917 回答