2014-11-03 5 views
0

У меня есть проблема с этой задачей является:Regex для сопоставления имени с последующими номерами

  • Если есть : или / между именем и номером там МОЖЕТ быть пробельными bevore и после символ

  • Если символов нет, ДОЛЖЕН быть пробелом между именем и номером.

До сих пор я пришел к этому:

^\s*[^/:\d]*\s*?[/:]?\s*([0-9]{6,10})\s*$ 

Но что соответствует Name1234567 неправильно. Это должно быть неправильно, но это правда. (ДОЛЖНЫ быть пробелы между ними)

1234567, Name 1234567 или Name/1234567 все прекрасно работает. Но я не могу справиться с этой конкретной задачей.

Надеюсь, что кто-то может исправить эту проблему. Greetz

ответ

0

Как насчет

[a-zA-Z]*(?:\s|(?:\s?[:\/]\s?))\d+ 

, например http://regex101.com/r/dD3lP4/1

Как это соответствует

[a-zA-Z]* совпадает с любым количеством алфавитов

(?:\s|(?:\s?[:\/]\s?)) соответствует пробелу \s или \s?[:\/]\s?, а затем : или / с последующим пробелом \ s. В квантифицирует ? делает \s вхождение в ноль или один (может частично в вопросе)

\d+ совпадает с любым количеством цифр

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