我有一个连续的场景 - 。或.-不应该被允许在URL中。
EG。 https://www.test.-nic
或https://www.test-.nic
,而https://www.test.nic--xn/
应该被允许
你能帮助我改进这个正则表达式吗?
/^(http|https|ftp):\/\/[a-z0-9]+(.[a-z0-9-]+)*.[a-z0-9]{2,5}(:[0-9]{1,5})?(\/.-*)?$/i
答案 0 :(得分:0)
您可以使用否定前瞻:
/^(https?|ftp):\/\/(?=.*?(?:\.-|-\.)[a-z0-9]+(\.[a-z0-9-]+)*\.[a-z0-9]{2,5}(:[0-9]{1,5})?$/i
如果网址中有(?=.*?(?:\.-|-\.)
或._
,那么 -.
是一个负面的预测,会导致匹配失败。