使用或不使用http和www的URL验证
URL validation with or without http and www
所有正则表达式都在这个js fiddle中传递。
当我将这个正则表达式移到asp.net页面时,正则表达式验证器#3、#seven和#eight将被视为无效。
ASP.net:
<asp:RegularExpressionValidator ID="RegularExpressionValidator8" ControlToValidate="txtHomePage"
runat="server" CssClass="StandardText" Display="Dynamic" SetFocusOnError="true"
ErrorMessage="Invalid URL" ValidationExpression="^(?!www | www'.)[A-Za-z0-9_-]+'.+[A-Za-z0-9.'/%&='?_:;-]+$"></asp:RegularExpressionValidator>
JavaScript代码:
function checkUrlTest(url){
// /^(?:(http|https|ftp):'/'/)?(?:['w-]+'.)+[a-z]{2,6}('/)?/i
// ^(?!www | www'.)[A-Za-z0-9_-]+'.+[A-Za-z0-9.'/%&='?_:;-]+$
var urlregex = new RegExp("^(?!www | www'.)[A-Za-z0-9_-]+'.+[A-Za-z0-9.'/%&='?_:;-]+$")
return urlregex.test(url);
}
var one = "yahoo.com";
var two = "www.yahoo.com";
var three = "http://www.yahoo.com"; //fails on .net page
var four = "yahoo.org";
var five = "somesite.org"
var six = "www.somesite.org"
var seven = "http://somesite.org" //fails on .net page
var eight = "https://www.somesite.org" //fails on .net page
var nine = "somesite.org?case=1"
alert(
one + '===> ' + checkUrlTest(one) + "'n" +
two + '===> ' + checkUrlTest(two) + "'n" +
three + '===> ' + checkUrlTest(three) + "'n" +
four + '===> ' + checkUrlTest(four) + "'n" +
five + '===> ' + checkUrlTest(five) + "'n" +
six + '===> ' + checkUrlTest(six) + "'n" +
seven + '===> ' + checkUrlTest(seven) + "'n" +
eight + '===> ' + checkUrlTest(eight) + "'n" +
nine + '===> ' + checkUrlTest(nine)
);
我找不到这里缺了什么?
^(www | www'.)
中的^
锚不包括前面包含https?
的行。您可以选择使用非捕获组和?
来查找这些情况:
^(?:https?://|s?ftps?://)?(?!www | www'.)[A-Za-z0-9_-]+'.+[A-Za-z0-9.'/%&='?_:;-]+$
这将匹配除最后两行以外的所有行:
yahoo.com
www.yahoo.com
http://www.yahoo.com
yahoo.org
somesite.org
www.somesite.org
http://somesite.org
https://www.somesite.org
somesite.org?case=1
www somesite.org // Space after 'www'
www.example.com // Leading space
regex101示例
相关文章:
- 正在验证8个真/假复选框或复选框中的2个
- 借助asp.net验证或java脚本对多个文本进行验证
- jQuery自定义验证比较多个输入的序列
- 使用html中的外部javascript进行数据验证
- 如何使用jquery Validation验证Formspread
- jquery中的文本框验证
- 在验证和发送邮件后更改联系人表单的 html
- 代码不会验证
- JS验证ajax返回的html中的表单数据
- 同步调用,直到用户通过angular验证为访问者
- 带有加号的电话号码验证(可选)
- 解析javascript表单验证器
- 两位数的月份日期验证
- 使用angularjs验证文本框中的电子邮件
- 使用或不使用http和www的URL验证
- 验证URL(如果用户使用http:// https:// www)
- JavaScript中不带www的URL验证
- 使用regex验证url(可选)http:www
- 如果存在顶级域名,则验证没有协议或www的url字符串
- 验证url没有https:// http://意味着也可以接受,如果url是WWW接受(http和WWW)