javascript - 捕获 url 前缀但排除 www 的正则表达式

标签 javascript regex lookaround

我一直在努力思考 javascript 中正则表达式的使用(不是专家),但我一直无法解决这个问题。

这是我的 url 的模式:

https://www.prefix.site.com

和我当前的正则表达式:

/(?:(\w+)\.)?site\.com

我需要做的是捕获“.site”之前的前缀,但我不想包含“https://www” .', 鉴于两者都是 'www.'我的前缀可能存在也可能不存在。我的前缀的一个例子可以是一个环境,例如https://testing.site.com

上面正则表达式的问题是如果有一个“www.”如果没有我的前缀,那么它将捕获“www.”作为前缀,这不是我需要的。

我有点用负面回顾解决了它,但由于它在 javascript 中不可用,我无法使用它。

如有任何提示,我们将不胜感激!

最佳答案

在捕获组的最开始,您可以对 www. 进行否定前瞻,以确保捕获组仅在包含 www. 以外的内容时才会匹配:

((?!www\.)\b\w+\.)?site\.com

https://regex101.com/r/K8btgd/1

注意单词边界 \b - 这是为了确保捕获组在非单词字符(如 / 之后开始。 ),或者根本不匹配(以防止匹配 ww.site.com,其中第三个 w 在它之前)

关于javascript - 捕获 url 前缀但排除 www 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53787267/

相关文章:

vb.net - 将字符串解析为指定长度(不切词)

regex - 如何在 Perl 中替换现有文件中的字符串

python - Python 正则表达式中可变宽度回顾的替代方案

javascript - 如何防止动态更改时输入按钮中的居中文本移动

javascript - 创建自定义 "console"对象以在浏览器中与自定义调试器的 Web 控制台交互

javascript - 一次删除所有芯片 Jquery 和 css

javascript - 将内容从 div 复制到页面标题时,如何防止 '&' 字符的 HTML 编码?

Python Regex[Forking] - 根据术语捕获组,但如果遇到集合中的另一个术语则跳过

regex - 遇到字符序列 : fixing a lookbehind 时停止匹配