[英]Validate proxy URL using XML regex pattern
我正在使用XML regex模式來匹配我的代理URL。
例如:代理:ab-proxy-sample.company.com:8080
我的要求:
我當前的XML正則表達式是:[^ http:// | https://]。+:[0-9] + |
但是它匹配每個字母而不是整個單詞嗎?
任何幫助將不勝感激。 提前致謝 !
正如@arnep所指出的那樣,您正在嘗試使用帶交替符號的否定字符類 ,但這不是它的工作方式。 另外,這里是有關前行的一些信息。
我確定其他人會發布您可以復制和粘貼的答案,但這是學習正則表達式基礎的有用機會!
更新:
我沒有意識到您使用的引擎不支持負面環視。 沒有負面的環顧,幾乎不可能實現您想要的目標。
幾乎 ;)
這是一種“強力”組合方法:
(?:[^h]|h(?:[^t]|t(?:[^t]|t(?:[^p]|p(?:[^s:]|s(?:[^:]|:(?:[^\/]|\/(?:[^\/])))|:(?:[^\/]|\/(?:[^\/])))))))\S+:\d+
如果XML引擎不支持非捕獲組,即(?: ... )
則使用常規組:
([^h]|h([^t]|t([^t]|t([^p]|p([^s:]|s([^:]|:([^\\/]|\\/([^\\/])))|:([^\\/]|\\/([^\\/])))))))\\S+:\\d+
如果XML引擎不支持\\S
和\\d
類的字符類,請改用[^ \\t\\r\\n\\p]
和[0-9]
。
這是一個正在運行的示例: http : //rubular.com/r/JnpCVgeLmL 。 嘗試更改測試字符串。 您會看到...
ab-proxy-sample.company.com:8080 # matches
htab-proxy-sample.company.com:8080 # matches
http://ab-proxy-sample.company.com:8080 # doesn't
https://ab-proxy-sample.company.com:8080 # doesn't
httpd://ab-proxy-sample.company.com:8080 # matches
請注意, 您不需要^
和$
。 我為Rubular演示專門添加了這些,但是顯然XML引擎假定了這種情況(固定)。
這是如何運作的? 如果我們像這樣分解它,則更容易理解:
([^h] | h
([^t] | t
([^t] | t
([^p] | p
([^s:]| s ([^:]|:([^\/]|\/([^\/])))
| : ([^\/]|\/([^\/])))
))))
\S+:\d+
說明:
在這里,這很棘手:現在我們遇到了三個分支。
最后,如果到此為止,我們將尋找一串非空白字符,后跟一個冒號,然后是一串數字。
我將它留給比我本人更聰明的數學家來考慮,是否可以通過這種方式將所有使用環視條件可匹配的字符串“強加給”。
為避免匹配以某個單詞開頭的字符串,請使用負向查找:
^(?!https?).*$
將匹配任何不以http開頭的字符串。 其他要求留給讀者作為練習:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.