0

我有一个文本区域,它需要验证链接(Web、Intranet 或其他 PC 中的共享文件夹)。我使用了这个正则表达式:^(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.comhttp://www.google.com等其他人。我可以知道我哪里出错了吗?我知道这很简单,但我对 Regex 并不了解。

谢谢。

4

1 回答 1

4

这是您的正则表达式的可视化。从这里应该很容易看出你哪里出错了:

在此处输入图像描述

您不允许在协议字符串之后使用除字母数字和句点之外的任何内容。您可能还希望允许使用斜杠、井号、查询字符串字符等。

实际上,您的正则表达式似乎只是在检查它是否以协议字符串(或 www)开头,后跟一些字母数字,然后是句点。它将匹配您示例中的第一个句点https://wiki.abc.in/abc/xyz。它不会匹配http://abcserverName/Home/Index#,因为没有句号,而您的正则表达式需要一个。

于 2013-02-19T04:37:02.617 回答