2012-01-10 4 views
1

Привет, ребята, я просмотрел множество версий проверки правильности выражения, но я не могу заставить его работать там, где он будет допускать только определенные буквы в начале, прежде чем текст будет введен, поэтому если этот текст не будет введен, ничто не может быть введено, поскольку оно покажет подтверждение. Например, я пробовал:Проверка правильности выражения

[Required] 
[RegularExpression("^(?:[www.]|a-z|A-Z|)*$", /*This allows the www. only and nothing else*/ ErrorMessage = "Cars Only")] 
public string Cars { get; set; } 

и я попробовал:

[Required] 
[RegularExpression("^(?:(ht|f)tp(s?))\://){1}\S+)|a-z|A-Z|)*$", /*This does not work*/ 
ErrorMessage = "Cars Only")] 
public string Cars { get; set; } 

Многие другие также, но на много пасты будет долго.

Может ли любая помощь после www. ввести что-либо, но если не введено www., тогда будет отображаться сообщение об ошибке.

+0

Что случилось с моими тегами я был в состоянии использовать Razor.asp.net как тег и бритвенные веб-страниц в качестве тега, но я больше не могу использовать Razor в asp.net. Мне нужно иметь доступ к ним. Спасибо за редактирование. Я попытался это сделать, но мой браузер не будет позвольте мне поблагодарить – user1137472

+0

, какую проблему вы решаете? На многих веб-сайтах есть URL-адрес, который не начинается с 'www.'. – CodesInChaos

+0

Проблема решена моим дорогим другом благодаря вам, когда я создаю вопрос на этом веб-сайте. Я больше не могу выбирать те теги, которые были доступны мне, такие как: Razor.asp.net и веб-страницы Razor, которые были доступны мне, когда я использую чтобы добавить вопросы, и теперь они были удалены из моей учетной записи. – user1137472

ответ

3

"www." соответствия:

www\..* // no line start/end criteria 
^www\..*$ // line start/end enforced 

Вот более полное выражение, которое обрабатывает префикс:

^(https?|ftp):\/\/www\..*$ 

Это будет соответствовать:

http://www.test.com 
https://www.test.com 
ftp://www.test.com/test 

еще лучше, это делает префикс обязательным, но «WWW «. Дополнительно:

^(https?|ftp)\:\/\/(www\.)?.*$ 

Это будет соответствовать: только

^(https?|ftp)\:\/\/(www\.)?.*\/[\w\-\+\%]*\.(gif|jpg|jpeg|png)$ 

http://www.test.com 
https://www.test.com 
ftp://www.test.com/test 
http://test.com 
https://test.com 
ftp://foo.org 

Matching изображения Это будет соответствовать:

ftp://foo.org/test.png 
https://test.com/image.jpg 
http://www.bar.com/my-image.png 
http://foo.org/my%20image.jpeg 
http://foo.org/my%20image%20test_foo.jpeg 

Это потребует префикс в начале, косую черту, имя файла (который позволяет буквенно-цифровые символы, символы подчеркивания, тире и URL-кодированные значения, содержащие% или +), и действительное расширение изображения.

Это не будет надежным! Помните, что изображения могут обслуживаться с любого обработчика HTTP. URL-адрес не может содержать ничего связанного с изображением.

Дополнительная информация

Я согласен с предложением @Russ Кэма посмотреть на jQuery validator source code, чтобы увидеть, сколько возможностей есть на самом деле.

Возможно, что URL-адрес, который вводит пользователь, находится в допустимой форме, но не существует; это может быть проверено на стороне сервера простым запросом.

Я рекомендую RegexBuddy, если вам часто нужно создавать регулярные выражения.

Я также рекомендую RegExr для быстрого онлайн-тестирования.

+0

Как я могу это сделать, чтобы любой URL? или еще лучше изображение? так как это поле на моем сайте позволяет подать изображение, для которого разрешено копировать URL-адрес и вставлять его, и он отображает изображение. – user1137472

+0

. Ваш второй ответ хорошо работает благодаря – user1137472

+0

Но он позволяет любому веб-сайту. Есть ли способ разрешить второй с изображениями – user1137472

0

в соответствии с критериями,

[Required] 
[RegularExpression(@"^www\..+$", ErrorMessage = "Cars Only")] 
public string Cars { get; set; } 

Вы можете играть с этим регулярным выражением на nregex, чтобы увидеть, что соответствует, а что нет.

Я подозреваю, что вы ищете регулярное выражение для соответствия действующему URI? Если вы, я хотел бы использовать регулярное выражение для стороны клиента (обратите внимание на правилах URL-адреса в jQuery validate) и создать атрибут Validation для стороны сервера, который передает строку в Uri.IsWellFormedUriString(string uri, UriKind.Absolute)

+0

Я использую MVC3, но я не могу включить, что в моих тегах это несовместимо с MVC3, он говорит «.». не распознается – user1137472

+0

D'oh! забыли префикс '@' для стенографического литерала. Попробуйте прямо сейчас –

+0

О, ладно, спасибо, спасибо, – user1137472

0

дробить необходимые детали (т.е. сделать www. необязательными, а затем то, что следует за ним по желанию, но не зависит от www.

[Required] 
[RegularExpression("^(?:[www.])(?:|a-z|A-Z|)*$", /*This allows the www. only and nothing else*/ ErrorMessage = "Cars Only")] 
public string Cars { get; set; } 
+0

Я постараюсь ответить, спасибо – user1137472

+0

пытался найти его для URL-адреса, но не мог бы вы его знаете? – user1137472

+0

Это не работает, когда я помещаю это после www. Я не могу включить что-нибудь – user1137472

Смежные вопросы