为什么正则表达式不能正确验证网站URL
Why does the regular expression not validate the website URL properly?
以下是我用于验证网站URL的URL表达式(regex):
/(https?:'/'/)(www)?[A-Za-z0-9.'-@_~]+'.[A-Za-z]{2,}(:[0-9]{2,5})?('/[A-Za-z0-9'/_'-.~?&=]*)*/
我的angular JS代码实现如下:
<md-input-container class="md-block" style="margin-top:20px;">
<label>Website</label>
<input ng-model="schoolDetails.website" name="website" ng-change="editField()" type="url" ng-pattern="/(https?:'/'/)(www)?[A-Za-z0-9.'-@_~]+'.[A-Za-z]{2,}(:[0-9]{2,5})?('/[A-Za-z0-9'/_'-.~?&=]*)*/">
<div ng-messages="schoolDetailsForm.website.$error">
<div ng-message="pattern">Please enter a valid website</div>
</div>
</md-input-container>
假设我给出有效的URL http://www.bharatividyapeeth.edu
,它工作得很好。如果我给出无效的URL,http://www.
会显示错误消息,但当我输入无效的URL时,http://www.bharatividyapeeth
不会显示错误消息并将其作为有效的URL接受。
有人能纠正我的代码以正确验证网站URL吗?
谢谢。
您的任务似乎需要一个更简单的regex
。所以我只修改你的正则表达式。虽然这将适用于大多数URLs
,但在某些地方也会失败
/https?:'/'/(www'.)?(?!www'.)([A-Za-z0-9'-@_~]+'.)[A-Za-z]{2,}(:[0-9]{2,5})?('.[A-Za-z0-9'/_'-~?&=]+)*/
这对我来说似乎是正确的:
var str = 'http://www.bharatividyapeeth.in'
var reg = /(http|https)(:'/'/)+?(w{3}('.'w*'.))+(edu|com|co'.in|in)/gi;
document.querySelector('pre').innerHTML = str.match(reg)[0];
<pre></pre>
请测试并查看此正则表达式是否适用于您:
(https?:'/'/(?:www'.|(?!www))[^'s'.]+'.[^'s]{2,}|www'.[^'s]+'.[^'s]{2,})
这个将匹配以下内容:
http://www.bharatividyapeeth.edu
https://www.bharatividyapeeth.edu
www.bharatividyapeeth.edu
不匹配:
http://www.bharatividyapeeth
https://www.bharatividyapeeth
www.bharatividyapeeth
你可以在这里测试:
http://regexr.com/
相关文章:
- 正在删除node.js中已验证的网站
- php的网站验证不起作用
- 我们应该把数据验证放在网站的哪里
- 实现已验证用户更新状态的最佳方式,作为对系统中已更改状态的反应.(ASP.NET MVC网站)
- 为什么正则表达式不能正确验证网站URL
- 如何验证请求是否来自您网站上的脚本
- 用于验证网站 URL 的正则表达式
- 如何制作需要身份验证的网站
- 验证网站的 API
- 如何对网站进行编程以使用证书进行身份验证
- 跨域XMLHttpRequest以验证网站是否存在
- 在需要用户登录身份验证的网站上使用restify
- 验证不是't工作,现在我的网站也坏了
- javascript表单验证在网站上不起作用
- Javascript使用ASP.NET C#中的网站域名验证电子邮件地址
- 移动网站表单验证
- 使用您网站的摘要's用于CSRF的身份验证cookie
- 我如何判断哪个javascript框架正在验证网站上的表单
- 使用正则表达式验证网站url
- JQuery验证网站地址输入