我有这个正则表达式,它可以从字符串中提取域名。
var matches = str.match(/^https?\:\/\/([^\/:?#]+)(?:[\/:?#]|$)/i);
我想要相同的正则表达式,包括 rstp 等其他协议(protocol)。例如:
"http://www.example.com/a/".match(/^https?\:\/\/([^\/:?#]+)(?:[\/:?#]|$)/i)
结果:["http://www.example.com/", "www.example.com"]
我已经尝试过这个:
"http://www.example.com/a/".match(/^(http|https|rtsp)\:\/\/([^\/:?#]+)(?:[\/:?#]|$)/i)
但它也返回 http:["http://www.example.com/", "http", "www.example.com"]
我想要相同的输出。
谢谢。
最佳答案
您只需将协议(protocol)交替组转换为非捕获组,方法是在其前面添加 ?:
:
"http://www.example.com/a/".match(/^(?:http|https|rtsp)\:\/\/([^\/:?#]+)(?:[\/:?#]|$)/i)
//["http://www.example.com/", "www.example.com"]
关于javascript - 正则表达式获取具有不同协议(protocol)的域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35844976/