我有这个域列表
https://download.my-domain.com/auth/login
https://download.my-domain.com
http://localhost:60162/API/script/authbar.js
http://localhost:28173/logout.aspx
http://my-domain.com/logout.aspx
http://my-domain.com/logout.aspx/
http://my-domain.com/
http://my-domain.com
http://my-domain.tk/
http://my-domain.gov
download.my-domain.com/auth/login
www.download.my-domain.com/auth/login
http://www.google.com
https://www.google.com
http://www.google.com/
https://www.google.com/
我试过
((\.)?[a-zA-Z0-9-]+\.([a-zA-Z0-9]{2,4}))/?
但它也检测到 logout.aspx 任何帮助都会受到赞赏..
TYIA
预期结果:
my-domain.com
localhost(没有端口)
google.com
my-domain.tk
my-domain.gov
用法:
对于cookie域
答案 0 :(得分:1)
答案 1 :(得分:1)
也许这个更有可能在你的例子中起作用
([a-zA-Z0-9-]+(\.(com|net|org|info|coop|co\.uk|org\.uk|ac\.uk|uk|tk|gov)))|localhost
答案 2 :(得分:1)
我用Javascript中的最小正则表达式做到了这一点因为我很无聊。我想这很容易转换为c#?
var urls = [
'https://download.my-domain.com/auth/login',
'https://download.my-domain.com',
'http://localhost:60162/API/script/authbar.js',
'http://localhost:28173/logout.aspx',
'http://my-domain.com/logout.aspx',
'http://my-domain.com/logout.aspx/',
'http://my-domain.com/',
'http://my-domain.com',
'http://my-domain.tk/',
'http://my-domain.gov',
'download.my-domain.com/auth/login',
'www.download.my-domain.com/auth/login',
'http://www.google.com',
'https://www.google.com',
'http://www.google.com/',
'https://www.google.com/'
];
var domains = urls.map(function (url) {
var domain = url.replace(/^https?:\/\//, '').split('/')[0];
if (domain.indexOf(':') > 0) {
domain = domain.split(':')[0];
} else {
domain = domain.split('.').slice(-2).join('.');
}
return domain;
});
答案 3 :(得分:0)
而不是
((\.)?[a-zA-Z0-9-]+\.([a-zA-Z0-9]{2,4}))/?
您应该添加所有可能的顶级域名
((\.)?[a-zA-Z0-9-]+\.(com|net|org|info|coop|co\.uk|org\.uk|ac\.uk|uk|tk)/?
答案 4 :(得分:0)
试试这个:
Regex("^(?>https?://|)([-A-Z0-9+&@#%?=~_|!,.;]+)", RegexOptions.IgnoreCase);
如果要忽略以logout.aspx结尾的行,请尝试以下操作:
Regex("^(?>https?://|)([-A-Z0-9+&@#%?=~_|!,.;]+)[-A-Z0-9+&@#%?=~_|!,:/.;]*(?<!logout.aspx/?)$", RegexOptions.IgnoreCase);