让URL只允许一些字符的正则表达式

jerry 正则 2016年03月06日 收藏
譬如 限制只允许正则出现以下的
a-Z
0-9
http:// 匹配连贯
https:// 匹配连贯
/ 不可连续两个出现
&
%
? 不可连续两个出现
= 等号
- 中划线
_ 下划线
. 点 很重要

有如下正则符合

^((?:http|https)://)?((?![/?]{2,})[a-zA-Z0-9\-._%&=/?])+$

RegexBuddy3 翻译工具

^((?:http|https)://)?((?![/?]{2,})[a-zA-Z0-9\-._%&=/?])+$
•断言在字符串的开头位置
•逆向引用1
◦重复0次到1次,尽可能多的匹配(贪婪)
◦用以下正则表达式匹配
■用以下正则表达式匹配(这一个正则表达式失败时用下一个正则表达式的替代)
■匹配字符“http”
■用以下正则表达式匹配(这一个正则表达式匹配失败,这一集合都不匹配)
■匹配字符“https”
◦匹配字符“://”
•逆向引用2
◦重复1次到无限次,尽可能多的匹配(贪婪)
◦注:你又逆向引用本身。匹配将以最后一个逆向引用做为引用。把重复的逆向引用迭代。
◦否定式向前查看
■匹配一个在下面的列表出现的字符“/?”
■Between 2 and unlimited times, as many times as possible, giving back as needed (greedy)
◦匹配一个在下面的列表出现的字符
■一个字符 其范围是a到z之间
■一个字符 其范围是A到Z之间
■一个字符 其范围是0到9之间
■字符 “-”
■一个字符 是“._%&=/?”其中的一个
•断言在字符串的末端位置