javascript - 正则表达式获取具有不同协议(protocol)的域

标签 javascript regex

我有这个正则表达式,它可以从字符串中提取域名。

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/

相关文章:

php - 为什么当我单击调用此函数的链接时没有任何反应?

c# - 信用卡验证正则表达式

regex - 使用 lua 脚本解析 csv

PHP查看有多少个字符相等

regex - 捕获 n 个字母的单词不计算撇号正则表达式

javascript - 无法使用 Protractor API 使用以下代码捕获错误

javascript - 我可以使用 $(document).ready(function() { ... });防止全局命名空间污染?

javascript - Onblur 事件绑定(bind)

javascript - 浏览器关闭时检测刷新浏览器以进行卸载/卸载前

regex - 从包含 Splunk 字符串的日志文件中提取 5 个字段