0
所有正則表達式都通過此js fiddle。帶或不帶http和www的URL驗證
當我將此正則表達式移到我的asp.net頁面時,正則表達式驗證程序#three,#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)
);
缺什麼在這裏,我是無法找到?
我猜它是斜槓//導致問題:-)我不是正則表達式的專家,但我認爲從經驗中使用正則表達式的不同風格到本地JavaScript – splig 2014-08-27 15:51:20
\反斜槓當它出現在'''引號內時需要逃脫。 – 2014-08-27 16:03:29
您的'^ '正在消除'https?//'前綴:它在行開頭後立即尋找'www'。請參閱http://regex101.com/r/gU2mM3/1 – OnlineCop 2014-08-27 16:03:53