URL验证正则表达式问题:需排除方括号并修正匹配异常
URL正则表达式调整方案
问题说明
当前使用的URL验证正则无法匹配https://stackoverflow[.]onion这类含方括号的URL,需调整正则以排除方括号,实现正确验证。
当前正则表达式
/^$|^((ftp|http|https):\/\/)?(www\.)?[\w$-_.+!*'(),#%{}|\\^~\[\]<>#%"]+(\.[\w$-_.+!*'(),#%{}|\\^~\[\]<>#%"]+)+((\/)[\w$-_.+!*'(),#%{}|\\^~\[\]<>#%"]+)*(\/[\w$-_.+!*'(),#%{}|\\^~\[\]<>#%"]+\?[\w$-_.+!*'(),#%{}|\\^~\[\]<>#%"]+=[^&=]+(&[\w$-_.+!*'(),#%{}|\\^~\[\]<>#%"]+=[^&=]+)*)?$/im
调整思路
原正则的所有合法字符集中包含了\[\](方括号),导致匹配时会将方括号视为有效字符。只需从所有字符集中移除\[\],即可排除含方括号的URL。
调整后的正则表达式
/^$|^((ftp|http|https):\/\/)?(www\.)?[\w$-_.+!*'(),#%{}|\\^~<>#%"]+(\.[\w$-_.+!*'(),#%{}|\\^~<>#%"]+)+((\/)[\w$-_.+!*'(),#%{}|\\^~<>#%"]+)*(\/[\w$-_.+!*'(),#%{}|\\^~<>#%"]+\?[\w$-_.+!*'(),#%{}|\\^~<>#%"]+=[^&=]+(&[\w$-_.+!*'(),#%{}|\\^~<>#%"]+=[^&=]+)*)?$/im
效果说明
调整后的正则移除了所有允许字符集中的方括号规则,验证时会自动排除包含方括号的URL,同时保留对其他合法URL格式的匹配能力。
内容的提问来源于stack exchange,提问作者SAMRAT
相关产品推荐
相关产品推荐

