【发布时间】:2018-12-17 19:34:51
【问题描述】:
我需要帮助来优化我的正则表达式以处理 URL BBCode 标记。正则表达式用于检查 URL 标记是否具有有效模式并且不包含白名单协议
#(\[url=(?:"|"|\'|)(((((?!https|http|ftp|mailto).)*):(//)?)([^\[\]]*))(?:"|"|\'|)\])(.*)(\[/url\])#siU
正则表达式将忽略:
- [url="www.example.com"]示例[/url]
- [url="https://example.com"]示例[/url]
- [url="http://example.com"]示例[/url]
- [url="ftp://example.com"]示例[/url]
- [url="mailto:mail@example.com"]示例[/url]
当匹配时:
- [url="ymsgr://example.com"]示例[/url]
- [url="anyprotocol://example.com"]示例[/url]
运行良好且没有问题,直到用户创建长度超过 10000 个字符的字符串数据,这将导致 灾难性回溯
【问题讨论】: