如何修复我的正则表达式检查www.正确的一部分吗?



我有这个正则表达式你可以看到www.是可选的

(https://)(?:www.)?([^./][w.,@?^=%&:/~+#-]*[w@?^=%&/~+#-])

但是这个正则表达式会匹配

https://w.youtube.com

https://w...youtube.com

例如,因为它会认为w.是另一个基团的一部分。但我想防止匹配ww.w.w...。应该是www.或者什么都不写

可以使用

https://(?!w{1,2}.)(?:www.)?([^./][w.,@?^=%&:/~+#-]*[w@?^=%&/~+#-])
https://(?!ww?.)(?:www.)?([^./][w.,@?^=%&:/~+#-]*[w@?^=%&/~+#-])

增加的部分是https://之后的(?!w{1,2}.)负正向。它匹配的位置没有立即后跟一个或两个w字符,后跟一个文字点。

参见regex演示。

也匹配http://,使s可选,https?://.

最新更新