[英]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.