Javascript 用于验证web和LDAP url的正则表达式

Javascript 用于验证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

我正在创建一个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}\\){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。