Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP正则表达式-如何统一匹配域?_Php_Regex - Fatal编程技术网

PHP正则表达式-如何统一匹配域?

PHP正则表达式-如何统一匹配域?,php,regex,Php,Regex,我的web应用程序中有两个可能的URL-s www.domain.com www.user.domain.com 现在我需要两个php正则表达式,它们将唯一地匹配每个URL 我写了两个正则表达式: 1. (www\.)?(domain)(\.)(com) 2. (www\.)?([a-z]+)(\.)(domain)(\.)(com) 第一个将匹配第一个URL。 第二个将匹配第二个URL,但它也将匹配第一个URL。这就是问题所在 如何编写正则表达式来统一匹配每个URL 这是一个链接,你可以看到

我的web应用程序中有两个可能的URL-s

  • www.domain.com
  • www.user.domain.com
  • 现在我需要两个php正则表达式,它们将唯一地匹配每个URL

    我写了两个正则表达式:

    1. (www\.)?(domain)(\.)(com)
    2. (www\.)?([a-z]+)(\.)(domain)(\.)(com)
    
    第一个将匹配第一个URL。 第二个将匹配第二个URL,但它也将匹配第一个URL。这就是问题所在

    如何编写正则表达式来统一匹配每个URL

    这是一个链接,你可以看到我的问题。 链接:

    尝试:

    ^(((www\.)([a-z]+))|(?!(www\.))([a-z]+))(\.)(domain)(\.)(com)$
    
    尝试:


    两者是否都有可选的
    www
    user.domain.com
    也能工作吗?为什么不在
    上拆分,看看结果数组中的一个是否包含在另一个数组中?@d3v3us是的,这两个数组在有www.So(www\)或没有www.So(www\)的情况下都能工作?我想一开始就应该在那里。但是是的,他们必须有可选的www.@jackmaney-我真的不明白。我对正则表达式还很熟悉。您需要使用preg\u split(/\./)拆分URL吗?你能给出一些代码说明为什么你不能让2号同时处理这两个问题吗?我猜想,如果你想根据它是哪一个做一些不同的事情,那么正确地排序你的条件句,并使用
    else
    就行了。两者都有可选的
    www
    user.domain.com
    也能工作吗?为什么不在
    上拆分,看看结果数组中的一个是否包含在另一个数组中?@d3v3us是的,这两个数组在有www.So(www\)或没有www.So(www\)的情况下都能工作?我想一开始就应该在那里。但是是的,他们必须有可选的www.@jackmaney-我真的不明白。我对正则表达式还很熟悉。您需要使用preg\u split(/\./)拆分URL吗?你能给出一些代码说明为什么你不能让2号同时处理这两个问题吗?我猜想,如果你想根据它是哪一个做一些不同的事情,那么正确地排序你的条件,并使用
    else
    就行了。这会行得通的,尽管这对于你正在尝试做的事情来说有点难看,并且开始摆脱使用正则表达式的能力。在这一点上,我有这样的东西,我会评估做什么像@Jack建议在评论的问题,并分割域和检查其部分。这个正则表达式使用10组!这将起作用,尽管它对于您正在尝试做的事情来说有点难看,并且开始摆脱使用正则表达式的能力。在这一点上,我有这样的东西,我会评估做什么像@Jack建议在评论的问题,并分割域和检查其部分。这个正则表达式使用10组!