如何为url编写自定义正则表达式(自定义URL)

时间:2016-07-18 09:27:05

标签: regex validation

我的应用程序接受以下类型的网址

示例:

ABa12C.constant.com或

http://ABa12C.constant.com

https://ABa12C.constant.com

  1. (可选)以http://或https://或任何内容开始。
  2. 不应以整数开头(1aAb4.constant.com无效)。
  3. 代替com,它可以是任何类似的(in,uar,sr等)但不是整数。
  4. 我的正则表达式:[http://a-zA-Z0-9] {1,20} .constant。[a-zA-Z] {1,5}

    但是如何制作http:// optional和只能在开头使用,而不能在开头时为整数。

2 个答案:

答案 0 :(得分:1)

您的模式没有锚点,初始子模式是一个字符类[http://a-zA-Z0-9]{1,20},匹配来自该类的1到20个字符htp:/a-zA-Z0-9,同时您需要将http://序列匹配

我建议

^(https?:\/\/)?[a-zA-Z][a-zA-Z0-9]{0,19}\.constant\.[a-zA-Z]{1,5}$

请参阅the regex demo

<强>解释

  • ^ - 字符串开头
  • (https?:\/\/)? - http://https://
  • 的可选序列
  • [a-zA-Z] - ASCII字母
  • [a-zA-Z0-9]{0,19} - 0到19个字母数字字符(长度限制可由您调整)
  • \.constant\. - 一个常量子串.constant.
  • [a-zA-Z]{1,5} - 1到5个ASCII字母
  • $ - 字符串结束。

答案 1 :(得分:0)

以下正则表达式可以解决问题:

(?:https?:\/\/)?[^0-9]\S*\.[^0-9]\S* demo

请注意,non-capturing group (?:)用于协议。