2016-07-04 2 views
0

Я в настоящее время есть регулярное выражение для проверки поля в моем приложении, которое выглядит следующим образом:Regular Expression принять - символ

^(?:(?:\w|[-])+\.(?:(?:(?:\w|[-])+|\.))*(?:\/(?:\w|[-])*)*|\w*)$

К сожалению, некоторые аспекты этого не работает.

  • ааа - Пропуска - Правильное

  • aaa.aaa - Пасы - Правильное

  • aaa.aaa-ааа - Пасы - Correct

  • ааа -aaa - Fails - Неверный

Как я могу изменить свое регулярное выражение, чтобы пропустить последний проход?

+1

Вы должны сделать точка дополнительно: '^ (: (:?.? \ Ш | [-]) + \ (?: (?: (?: \ w | [-]) + | \.)) * (?: \/(?: \ w | [-]) *) * | \ w *) $ ' –

ответ

1

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

Если вы делаете точку опцией, ваше выражение работает.

Не уверен, но, возможно, вы можете упростить выражение так:

[A-Za-z]+([\-\.][A-Za-z]+)* 
+1

Тем не менее, так как якоря должны присутствовать. –