Регулярное выражение для сопоставления 2 URL-адреса - PullRequest
1 голос
/ 13 января 2012

Вот 2 примера URL:

/ car / 2004 -audi-a * 4 * - 12149

/ автомобиль / 12149

Это то, что у меня есть до сих пор:

[0-9] - [A-Za-z] - [A-Za-z] - [0-9] | [0-9] +

Это соответствует только тем частям, которые я подбодрил выше.Мне нужно соответствовать приведенным ниже деталям:

/ автомобиль / 2004-audi-a4- 12149

/ автомобиль / 12149

Вероятно, это не имеет значения для регулярного выражения, но я использую это в маршруте CakePHP:

Router::connect(
   '/car/:id',
   array('controller' => 'cars', 'action' => 'view'),
   array(
      'pass' => array('id'),
      'id' => '[0-9]-[A-Za-z]-[A-Za-z]-[0-9]|[0-9]+'
   )
);

Ответы [ 2 ]

1 голос
/ 13 января 2012

Если вы хотите соответствовать последним числам строки, вы можете использовать это.

\d+$

Если я далеко, не могли бы вы попытаться описать образец снова?

0 голосов
/ 15 января 2012

Причина, по которой у вас не работает \d+$, связана с этим кодом /car/:id в своем определении маршрута вы просите торт для все после косой черты, чтобы соответствовать \d+$ что не относится к /car/2004-audi-a*4*-12149

Я бы предпочел передать все 2004-audi-a*4*-12149 как слаг в действие и затем вызвать обычный php preg_match для извлечения идентификатора, используя (\d+$)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...