gpt4 book ai didi

php - 特殊条件下的preg_match_all子域

转载 作者:行者123 更新时间:2023-12-01 21:58:15 25 4
gpt4 key购买 nike

更新:

我正在使用这个正则表达式:

/[^a-z^-^0-9^@^%^\/^:^\.^-]((?<!w\.)(?!w+\.)([0-9a-z][0-9a-z\-]*\.){2,}[a-z]+)(["|\s|<]|$)/i

当字符串只是域而没有其他内容并在新行中彼此列出时,正则表达式有一个小问题

例如:

$string = 'sub84.example4.com
sub-example.example84.net
sub-84example.example-h1.org
www-example4124.domain.com
sub.example-www.com';

所有域都应该匹配,但当前的正则表达式仅匹配 sub-example.example84.netwww-example4124.domain.com

我还希望添加更多条件:

1) 域名字母必须小且不能大写(当前不关心这一点)例如:Sub.example.Com不行。

2) 否 =SPACE (SPACE (" :SPACE在域名和 NO SPACE) 之前或SPACE= ") SPACE:之后。

例如:

$string = '

text = sub1.example.com text
text ( sub2.example.com text
text sub3.example.com = text
text sub4.example.com ) text
text ("sub5.example.com text
text sub6.example.com") text
text : sub7.example.com text
text sub8.example.com : text

';

没有一个是好的

3) 排除.info .biz .tv顶级域名

谢谢。

最佳答案

我不太明白这样做的目的或令人难以置信的数量的条件,但你可以尝试这个(相当长的一个......):

(?<!http://)(?<!https://)(?<!www\.)(?![^\s<>]*[:@/])(?<![(=:] )(?<!\(")(?:(?<=[\s">])|^)(?:[a-z0-9-]+\.){2}(?!info|biz|tv)[a-z]+(?=[\s"<]|$)(?! [=):])(?!"\))

regex101 demo


分割:

(?<!http://)(?<!https://)(?<!www\.)        # Prevent http:// https:// and www.
(?![^\s<>]*[:@/]) # Prevent : @ /
(?<![(=:] )(?<!\(") # Prevent '( ' '= ' etc
(?:(?<=[\s">])|^) # Ensure there's ' ', '>', '"' or beginning of line
(?:[a-z0-9-]+\.){2}(?!info|biz|tv)[a-z]+ # Main match, alphanumerics and -, 2 parts + tlds (excluding info, biz, tv
(?=[\s"<]|$) # Ensure there's ' ', '<', '"' or end of line
(?! [=):])(?!"\)) # Prevent ' )' ' =' etc

关于php - 特殊条件下的preg_match_all子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29157977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com