我想对Textbox进行客户端和服务器端验证,该验证仅应接受URL
。我找不到任何具有相同功能的链接。
任何人都可以提供一些想法吗?
@Html.TextBoxFor(m => URl })
答案 0 :(得分:2)
UrlAttribute
中已经有一个System.ComponentModel.DataAnnotations
,您可以将其应用于您的媒体资源以进行客户端和服务器端验证。
[Url] // Add optional (ErrorMessage = "...") as required
public string Url { get; set; }
内部,它使用以下正则表达式(来自source code)
^(https?| ftp)://(((((([az] | \ d |-|。| |〜| [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEFEF ])|(%[\ da-f] {2})| [!\ $&'()* +,; =] |:)* @)?((((\ d | [1-9] \ d | 1 \ d \ d | 2 [0-4] \ d | 25 [0-5])。(\ d | [1-9] \ d | 1 \ d \ d | 2 [0-4] \ d | 25 [0-5])。(\ d | [1-9] \ d | 1 \ d \ d | 2 [0-4] \ d | 25 [0-5])。(\ d | [1 -9] \ d | 1 \ d \ d | 2 [0-4] \ d | 25 [0-5]))|(((([az] | \ d | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF])|(([[az] | \ d | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]])[[az] | \ d |-|。 |〜| [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF])([az] | \ d | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF00- \ uFFEF ]))))(([[az] | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF])|(([[az] | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF])([az] | \ d |-|。| _ |〜| [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF])([az] | [ \ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]))。?)(:\ d *)?)(/((((([az] | \ d |-|。| | 〜| [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF])|(%[\ da-f] {2})| [!\ $&'()* +,; =] |: | @)+(/(((([az] | \ d |-|。| |〜| [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]])|(%[\ da -f] {2})| [!\ $&'()* +,; =] |:| @)))?)?(\?(((([az] | \ d |-|。| |〜| [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF])|(%[\ da-f] {2})| [!\ $&'()* +,; =] |:| @)| [\ uE000- \ uF8FF] | / | \?)*)?(#((((([[az] | \ d |-|。| |〜| [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]])|(% [\ da-f] {2})| [!\ $&'()* +,; =] |:| @)| / | \?)*)?$
答案 1 :(得分:1)
您可以使用正则表达式进行URL验证。
^ http(s)?://([\ w-] +。)+ [\ w-] +(/ [\ w- ./?%&=])?$
OR
/ ^ http(s)?://([[ww-] +。)+ [\ w-] +(/ [\ w- ./?%&=])?$/
您可以在服务器端和Javascript中使用此正则表达式。
检查:JSFIDDLE
答案 2 :(得分:1)
您可以在模型中使用RegularExpression验证:
[StringLength(200)]
[RegularExpression(@"((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)", ErrorMessage = "Not a valid website URL")]
public string MyUrlField { get; set; }
我发现上面的正则表达式与here中的网址相匹配。您还可以检查this website是否有其他与网址匹配的正则表达式。
请注意,您需要包括jquery-validation-unobtrusive才能进行客户端验证。