Javascript 用于验证web和LDAP url的正则表达式
我正在创建一个RegexJavascript 用于验证web和LDAP url的正则表达式,javascript,regex,url,Javascript,Regex,Url,我正在创建一个Regex^(http://https://ldap:///ldaps://){1}[\S]*$来验证这些类型的URL ldap://192.442.242.244:389 它不应该验证 错误的URL ldap://192.442.242.244:389asd ldap://192.442.242asd.244:389 我将在javascript中使用它在您可以使用的IP中使用它 ^(http://https://ldap:///ldaps://)((\\d{1,3
^(http://https://ldap:///ldaps://){1}[\S]*$
来验证这些类型的URL
- ldap://192.442.242.244:389
- 错误的URL
- ldap://192.442.242.244:389asd
- ldap://192.442.242asd.244:389
^(http://https://ldap:///ldaps://)((\\d{1,3}\\){3}\\d{1,3}(:\\d{1,5})$
但对于其他URL。。。您必须检查站点是否响应。因为它可以是一个站点,比如说
wwsw.com
,你的正则表达式怎么知道它是不是一个真正的站点?可能存在具有子域wwsw的真实站点。编辑:
GlitchMr是对的。对于IPv4,使用他的正则表达式
m{ (?:ldap|http)s?:// # Scheme
(?:(?!.*\d[/?:]) [a-z0-9\-._~%]+ | # IPv4 host (forbid ending with digit)
# IP (yep, I've copied this regexp)
(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])
\[[a-z0-9\-._~%!$&'()*+,;=:]+\] ) # or IPv6 host
(?::\d+)? # Port
(?:
[/?] # Slash or question mark
[-A-Z0-9+&@#/%?=~_|$!:,.;]* # URL itself
)? # Technically, trailing / is required in URLs, but many browser implementations ignore it when accepting those
}ix
此正则表达式应与/ix
一起使用。由于JS不包含/x
修饰符,所以我将包含不包含它的版本
/(?:ldap|http)s?:\/\/(?:(?!.*\d[\/?:])[a-z0-9\-._~%]+|(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\[[a-z0-9\-._~%!$&'()*+,;=:]+\])(?::\d+)?(?:[\/?][\-A-Z0-9+&@#\/%?=~_|$!:,.;]*)?/i
请注意,HTTP URL中允许使用大量字符,而无需使用
%
标记转义。您可能不希望URL不通过,因为它包含URL中允许的字符*
:)。@imrantariq:好的,我添加了故意违反HTTP标准的行为,允许?
不带斜杠。顺便说一下,http://wwsw.stackoverflow.com
是技术上有效的URL。完全有可能生成这样的子域。检查URL是否存在超出了regexpes的范围-它需要实际的网络连接。ldap://192.442.242.244:389
不是有效的IP。