我有一个textarea,它可以验证链接(其他PC中的Web,Intranet或共享文件夹)。我使用过这个正则表达式:^(http:\/\/|https:\/\/|ftp:\/\/|www.){1}([0-9A-Za-z]+\.)
。我的代码如下。
var isUrlValid = false;
var urlRegex2 = new RegExp(
"^(http:\/\/|https:\/\/|ftp:\/\/|www.){1}([0-9A-Za-z]+\.)");
isUrlValid = urlRegex2.test(linkPathVal);
这不会验证如下链接:
http://abcserverName/Home/Index#
https://wiki.abc.in/abc/xyz
但它会验证其他人,例如http://google.com,http://www.google.com等。我可以知道我哪里出错吗?我知道这很简单,但我并不认识Regex。
感谢。
答案 0 :(得分:4)
这是正则表达式的可视化。从这里可以很容易地看出你出错的地方:
除了字母数字和协议字符串后的句点,您不允许使用任何其他内容。您可能还希望允许使用斜杠,哈希符号,查询字符等。
事实上,你的正则表达式似乎正在检查它是否以协议字符串(或www)开头,后面是一些字母数字,然后是句点。它将匹配示例https://wiki.abc.in/abc/xyz
中的第一个句点。它不会与http://abcserverName/Home/Index#
匹配,因为没有句点而您的正则表达式需要一个。