2013-03-21 171 views
0

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

下面是代码: 我知道这些代码是fked起来的xD我在笑的基本知识

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

如果有人可以帮助我做到这一点,那将是伟大的!谢谢!

回答

0

让你的[RANDOM_KEYS_HERE]部分尝试了这一点:

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

末括号会做一个子表达式比赛应该允许你取出身份证。

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

感谢您的解决方案。真的有帮助! – user1932820 2013-03-21 22:17:31

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/#!
    • 之后捕获所有内容
  • +0

    非常感谢!它工作! – user1932820 2013-03-21 22:15:13

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

    或者你可以用这一个

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

    谢谢你兄弟!它工作得很好。 – user1932820 2013-03-21 22:17:05

    0

    你不需要regexp那里。你只需要找出字符串是否以一些子字符串开头。检查:

    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

    我希望这有助于。

    +0

    谢谢,它的工作原理! – user1932820 2013-03-21 22:18:09