CORS 源域的正则表达式模式
Regex pattern for CORS origin domain
CORS 来源规范要求来源具有以下可能性:
Origin: <scheme>://<hostname>
Origin: <scheme>://<hostname>:<port>
我想要一个可以将来源与上述条件相匹配的正则表达式;要匹配的示例域:
http://ex.bar.com
http://www.ex.com
https://ex.bar.com
https://ex.bar.ext:8080
我试过的是:
(^(http|https):\/\/)|(www)|(?!.*(-)+)(?:[a-zA-Z]{1}[a-zA-Z0-9-]{0,62}(?<!-)\.)+[a-zA-Z][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$:{0,61}
但这也匹配以 'www' 开头的域,我不需要并且与端口不匹配。
我通过构建这个正则表达式得到了这个工作:
^((http|https):\/\/)(?!.*(-)+)(?:[a-zA-Z]{1}[a-zA-Z0-9-]{0,62}(?<!-)\.)+[a-zA-Z][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$|^((http|https):\/\/)(?!.*(-)+)(?:[a-zA-Z]{1}[a-zA-Z0-9-]{0,62}(?<!-)\.)+[a-zA-Z][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]+:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$
第一部分匹配 http://www.ex.com or https://go.ex.com
^((http|https):\/\/)(?!.*(-)+)(?:[a-zA-Z]{1}[a-zA-Z0-9-]{0,62}(?<!-)\.)+[a-zA-Z][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$
第二部分是与第 1 部分相结合的端口号检查,以匹配具有给定端口号的域,即。
^((http|https):\/\/)(?!.*(-)+)(?:[a-zA-Z]{1}[a-zA-Z0-9-]{0,62}(?<!-)\.)+[a-zA-Z][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]
结合
+:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$
我确信这可能是执行此操作或代表上述内容的更好方法,请 post 如果有人知道。谢谢!
工作正则表达式(虽然需要精简):
^(\*$)|^((http|https)://)(?!.*(-)\1+)(?:[a-zA-Z][a-zA-Z0-9-]{0,62}(?<!-)\.)+[a-zA-Z][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$|^((http|https)://)(localhost|(?!.*(-)\1+)(?:[a-zA-Z][a-zA-Z0-9-]{0,62}(?<!-)\.)+[a-zA-Z][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])+:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$
CORS 来源规范要求来源具有以下可能性:
Origin: <scheme>://<hostname>
Origin: <scheme>://<hostname>:<port>
我想要一个可以将来源与上述条件相匹配的正则表达式;要匹配的示例域:
http://ex.bar.com
http://www.ex.com
https://ex.bar.com
https://ex.bar.ext:8080
我试过的是:
(^(http|https):\/\/)|(www)|(?!.*(-)+)(?:[a-zA-Z]{1}[a-zA-Z0-9-]{0,62}(?<!-)\.)+[a-zA-Z][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$:{0,61}
但这也匹配以 'www' 开头的域,我不需要并且与端口不匹配。
我通过构建这个正则表达式得到了这个工作:
^((http|https):\/\/)(?!.*(-)+)(?:[a-zA-Z]{1}[a-zA-Z0-9-]{0,62}(?<!-)\.)+[a-zA-Z][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$|^((http|https):\/\/)(?!.*(-)+)(?:[a-zA-Z]{1}[a-zA-Z0-9-]{0,62}(?<!-)\.)+[a-zA-Z][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]+:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$
第一部分匹配 http://www.ex.com or https://go.ex.com
^((http|https):\/\/)(?!.*(-)+)(?:[a-zA-Z]{1}[a-zA-Z0-9-]{0,62}(?<!-)\.)+[a-zA-Z][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$
第二部分是与第 1 部分相结合的端口号检查,以匹配具有给定端口号的域,即。
^((http|https):\/\/)(?!.*(-)+)(?:[a-zA-Z]{1}[a-zA-Z0-9-]{0,62}(?<!-)\.)+[a-zA-Z][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]
结合
+:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$
我确信这可能是执行此操作或代表上述内容的更好方法,请 post 如果有人知道。谢谢!
工作正则表达式(虽然需要精简):
^(\*$)|^((http|https)://)(?!.*(-)\1+)(?:[a-zA-Z][a-zA-Z0-9-]{0,62}(?<!-)\.)+[a-zA-Z][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$|^((http|https)://)(localhost|(?!.*(-)\1+)(?:[a-zA-Z][a-zA-Z0-9-]{0,62}(?<!-)\.)+[a-zA-Z][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])+:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$