我需要创建一个正则表达式来验证URL。
我需要创建一个正则表达式来验证URL。
isURL中的正则表达式并不能适用于所有情况。
错误的负向匹配(错误地返回false):
https://link.springer.com/article/10.1057/s41303-017-0039-0 https://www.academia.edu/12962582/Embodiment_Semiosis._Violi_P
错误的正向匹配(错误地返回true):
3.5/5
创建一个正则表达式,对以下URL返回true:
http://nonssl.com localhost:3000/ nohttp.com withslash.com/ sub.domain.com withpath.com/a/b
并对以下URL返回false:
例如:
3.5/5
我目前的正则表达式 =
/^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w-]+)+[\w\-_~:/?#[\]\@!\$&'\(\)\*\+,;=]+$/i
此外,我找到了这个正则表达式 =
^((ftp|http|https)://)?(www.)??(?!.(ftp|http|https|www.))??[a-zA-Z0-9_-]+
(.[a-zA-Z]+)+((/)[\w#]+)(/\w+\?[a-zA-Z0-9_]+=\w+(&[a-zA-Z0-9_]+=\w+)*)?$
但它除了localhost:3000和http://localhost:3000/之外接受任何内容。
在上述代码中,出现了需要创建正则表达式(RegExp)来验证URL的问题。问题的解决方法是使用JavaScript中的URL对象和条件语句来验证URL的正确性。
首先,代码中给出了一系列URL的示例,这些示例包括不同情况下的URL,如带有端口号、不带协议、不带路径等。然后,通过使用split("\n")将这些示例分割成一个字符串数组。
接下来,通过forEach循环遍历数组中的每个URL示例。在循环中,使用条件语句判断URL是否带有协议(以"http"开头)。如果URL带有协议,则直接使用URL对象来创建一个新的URL实例;如果URL不带协议,则在URL前面添加"http://"后再创建URL实例。
然后,通过条件语句将URL示例分割为主机名和路径部分。如果URL示例中包含端口号,则输出"port found"和主机名、端口号以及判断主机名是否与合并后的主机名和端口号相等的结果。如果URL示例中不包含端口号,则输出主机名和判断主机名是否相等的结果。
通过以上步骤,我们可以使用URL对象和条件语句来验证URL的正确性。
以下是整理后的文章:
在上述代码中,我们面临着一个需要创建正则表达式(RegExp)来验证URL的问题。为了解决这个问题,我们可以使用JavaScript中的URL对象和条件语句来验证URL的正确性。
首先,代码给出了一系列URL的示例,这些示例包括不同情况下的URL,如带有端口号、不带协议、不带路径等。然后,通过使用split("\n")将这些示例分割成一个字符串数组。
接下来,通过forEach循环遍历数组中的每个URL示例。在循环中,使用条件语句判断URL是否带有协议(以"http"开头)。如果URL带有协议,则直接使用URL对象来创建一个新的URL实例;如果URL不带协议,则在URL前面添加"http://"后再创建URL实例。
然后,通过条件语句将URL示例分割为主机名和路径部分。如果URL示例中包含端口号,则输出"port found"和主机名、端口号以及判断主机名是否与合并后的主机名和端口号相等的结果。如果URL示例中不包含端口号,则输出主机名和判断主机名是否相等的结果。
通过以上步骤,我们可以使用URL对象和条件语句来验证URL的正确性。