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

232
01 апреля 2017, 01:36

Собственно вот регулярное выражение которое у меня получилось:

\/[a-zA-Zа-яА-Я0-9]{1}[-a-zA-Zа-яА-Я0-9\.]{1,}((\?[а-яa-zА-ЯA-Z]{1,}=[0-9]{1,})|(\#[а-яa-zА-ЯA-Z]{1,})|())

Задумка, должно пропускать только вот такие строки

  • /блаблабла
  • /блабла-блабла
  • /блаблабла#блаблабла
  • /блаблаблбала?ывапваып=123409008098

Проблема в том что оно пропускает вот это:

  • /блаблаблбала?ывапваып=

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

Answer 1

Добавьте операторы начала (^) и конца строки ($) и поправьте шаблон следующим образом:

/^\/[a-zа-яё0-9][-a-zа-яё0-9.]+(?:\?[а-яa-zё]+=[0-9]+|#[а-яa-zё]+)?$/iu

См. демо

С помощью модификатора i можно не повторять буквы в противоположном регистре, а модификатор u позволяет обрабатывать шаблон и строки в Юникоде.

Заметьте, что {1,} = + (так короче).

READ ALSO
Универсальная структура БД

Универсальная структура БД

Хотел написать универсальный каркас для веб приложений, но столкнулся с проблемой проектирования БДЗадумка в следующем: Есть категории,...

194
отправка письма с помощью sendmail

отправка письма с помощью sendmail

2 день пытаюсь найти решение в интернете не получается, многое что перепробовал надеюсь вы мне помочь сможете использую Xampp)

206
Ошибка при подключении базы данных с помощью redbeanphp

Ошибка при подключении базы данных с помощью redbeanphp

Здравствуйте, пишу регистрацию для сайтаПодключаю базу данных и пишет ошибка:

300
Добавить узел в бинарное дерево

Добавить узел в бинарное дерево

Мне нужно добавить узел в бинарное дерево, чтобы вышло так: "Binary Tree is a kind of orderly table"Условие задачи:

202