javascript - 尝试匹配/测试完全合格的 sub.domain.com :1000 or 127. 0.0.1:1000

标签 javascript regex

我试图匹配至少必需的 sub.domain.com 或任何符合条件的内容,例如破折号、数字等。但出于示例目的,可能会匹配/测试 true。

www2.sub.doh-mein.com

www.sub1-2.doh-mein3.com

子域名.com

www2.sub.doh-mein.com:32000

www.sub1-2.doh-mein3.com:32000

子域名.com:32000

123.456.789.321

123.456.789.321:32000

我的第一次尝试让我得到了一些效果很好的东西,但不完全是那个模式 /^([a-z0-9-.]+)(:\d{1,5 })?$/i 我后来发现自己使用了

^((([a-z0-9|-]+\.)*)([a-z0-9|-]+\.)([a-z]+))(:\d {1,5})?$

这最终成为前者的过度美化版本。也就是说,有没有什么方法可以要求我达到特定的最低限度,而其他一切都是可选的。最小值为 sub.domain.com 或 IP 地址格式的字符串。从这里我没有在同一个字符串上运行多个正则表达式模式,希望不要用一堆 if-else 逻辑过多地污染我的代码

最佳答案

/(\w+(\.\w+)+|\d{1,3}(\.\d{1,3}){3})(:\d+)?/
  • \w+(\.\w+)+ 匹配 www2.sub.doh-mein.comsub.domain.com
  • \d{1,3}(\.\d{1,3}){3}123.456.789.321 匹配
  • (:\d+)? 匹配可选端口,例如ojit_代码

通过将 :32000 放在括号开头以表明您不想向后引用它们,可以提高性能:

/(?:\w+(?:\.\w+)+|\d{1,3}(?:\.\d{1,3}){3})(?::\d+)?/

关于javascript - 尝试匹配/测试完全合格的 sub.domain.com :1000 or 127. 0.0.1:1000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34930479/

相关文章:

c++ - 如何选择括号内的完整单词,即使它在单词中有括号

regex - Postgres 正则表达式负前瞻

python - 用于从python中的字符串中提取所有复杂日期格式的正则表达式

javascript - 如果服务器在 angular6 中关闭,如何将一个服务器 URL 更改为另一个服务器 URL

javascript - CouchDB:如何通过 javascript 更改 View 功能?

javascript - 清空整个邻居 div 部分

javascript - 根据值更改的时间将数组拆分为更小的数组

javascript - 由于 "a+?"是惰性的,为什么 "a+?b"匹配 "aaab"?

javascript - 使用一个正则表达式提取值

javascript - 无效的 tumblr 头,重复的文档类型,奇怪的 javascript