我尝试了一个regex来验证下面有效的和无效的代理URI。在验证python中的有效和无效场景方面,我需要帮助。
输入应以这种方式进行:
000.0000.00.00 #invalid
912.456.123.123 #invalid
999.999.999.999:99999 #invalid
192.168.1.1 #valid
192.168.1.1.1 #invalid
proxy.company.com:3128 #valid
https://proxy.company.com:3128 #valid
https://proxy.company.com:3128/?action=list #valid
user:pass@proxy.company.com:3128 #valid
localhost:8000 #valid
http://localhost:8000 #valid
3...3 #invalid
我的审判官:
(^(\w+)(?::)+((\w+))@)|(^https?:\/\/)|(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|(?:\.[^0-9])|(localhost)(?::(?![7-9]\d\d\d\d)(?!6[6-9]\d\d\d)(?!65[6-9]\d\d)(?!655[4-9]\d)(?!6553[6-9])(?!0+)(?P<Port>\d{1,5}))?(?:\/?|[\/?]\S+)$
这些案件是有效的:
3...3
192.168.1.1.1
我需要帮助对它进行全面的校对。
发布于 2019-11-12 19:11:56
要匹配示例数据,一种解决方案可以是匹配ip号,或者匹配类似url的结构,或者使用@
匹配结构。
^(?:(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|(?:https?://)?(?![\d.]+:)\w+(?:\.\w+)*:\d+\S+|\w+:\w+@(?![\d.]+:)\w+(?:\.\w+)*:\d+)$
大部分(你可以相应地调整它们)
^
开始(?:
非捕获群(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
模式到匹配ip号码|
或(?:https?://)?(?![\d.]+:)\w+(?:\.\w+)*:\d+\S+
匹配一个url样模式,该模式不能仅由冒号前的数字和点组成。|
或\w+:\w+@(?![\d.]+:)\w+(?:\.\w+)*:\d+
匹配用户名和密码的模式,后面是@
)
闭非捕获群$
末端注意到,这种模式不能保证完全校对,因为您的示例包含各种各样可能的变体。
https://stackoverflow.com/questions/58815427
复制相似问题