正则表达式将 url 与特定域正确匹配,如果添加了子域
Regex to properly match urls with a particular domain and also if there is a subdomain added
我有以下正则表达式:
(^|^[^:]+:\/\/|[^\.]+\.)hello\.net
这似乎适用于大多数情况,例如:
http://hello.net
https://hello.net
http://www.hello.net
https://www.hello.net
http://domain.hello.net
https://solutions.hello.net
hello.net
www.hello.net
然而它仍然匹配它不应该的:
hello.net.domain.com
你可以在这里看到:
https://regex101.com/r/fBH112/1
我主要是想检查 url 是否是 hello.net
的一部分。所以 hello.net
和 sub.hello.net
等任何子域都应该匹配。
它也应该匹配 hello.net/bye
。所以 hello.net 之后的任何内容都无关紧要。
您可以通过在末尾添加 (?:\/.*)?$
来修复您的模式:
(^|^[^:]+:\/\/|[^.]+\.)hello\.net(?:\/.*)?$
见regex demo。 (?:\/.*)?$
匹配一个可选序列 /
和任何 0 个或多个字符,然后是字符串的结尾。
您可以考虑 "cleaner" 模式,例如
^(?:\w+:\/\/)?(?:[^\/.]+\.)?hello\.net(?:\/.*)?$
见regex demo。详情:
^
- 字符串开头
(?:\w+:\/\/)?
- 可选出现 1+ 个单词字符,然后是 ://
char sqequence
(?:[^\/.]+\.)?
- 除了 /
和 .
之外的任意 1 个或多个字符的可选出现,然后是 .
hello\.net
- hello.net
(?:\/.*)?$
- /
的可选出现,然后是任何 0+ 个字符,然后是字符串结尾
我有以下正则表达式:
(^|^[^:]+:\/\/|[^\.]+\.)hello\.net
这似乎适用于大多数情况,例如:
http://hello.net
https://hello.net
http://www.hello.net
https://www.hello.net
http://domain.hello.net
https://solutions.hello.net
hello.net
www.hello.net
然而它仍然匹配它不应该的:
hello.net.domain.com
你可以在这里看到: https://regex101.com/r/fBH112/1
我主要是想检查 url 是否是 hello.net
的一部分。所以 hello.net
和 sub.hello.net
等任何子域都应该匹配。
它也应该匹配 hello.net/bye
。所以 hello.net 之后的任何内容都无关紧要。
您可以通过在末尾添加 (?:\/.*)?$
来修复您的模式:
(^|^[^:]+:\/\/|[^.]+\.)hello\.net(?:\/.*)?$
见regex demo。 (?:\/.*)?$
匹配一个可选序列 /
和任何 0 个或多个字符,然后是字符串的结尾。
您可以考虑 "cleaner" 模式,例如
^(?:\w+:\/\/)?(?:[^\/.]+\.)?hello\.net(?:\/.*)?$
见regex demo。详情:
^
- 字符串开头(?:\w+:\/\/)?
- 可选出现 1+ 个单词字符,然后是://
char sqequence(?:[^\/.]+\.)?
- 除了/
和.
之外的任意 1 个或多个字符的可选出现,然后是.
hello\.net
-hello.net
(?:\/.*)?$
-/
的可选出现,然后是任何 0+ 个字符,然后是字符串结尾