簡體   English   中英

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)|(?!.*(-)\1+)(?:[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):\/\/)(?!.*(-)\1+)(?:[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):\/\/)(?!.*(-)\1+)(?:[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.comhttps://go.ex.com

^((http|https):\/\/)(?!.*(-)\1+)(?:[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):\/\/)(?!.*(-)\1+)(?:[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|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])$

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM