Regex для соответствия изображений BBCode - PullRequest
0 голосов
/ 08 марта 2020

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

[img]https://example.com/image.jpg[/img]
[img=https://example.com/image.jpg]

Это то, что я пробовал до сих пор, но это не работает, к сожалению ...

/\[img(?=|\])(https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*))(?\])(?\[\/img\])/gi

Спасибо.

1 Ответ

0 голосов
/ 08 марта 2020

Вы можете использовать это- ^\[img(?:\].+\[\/img\]|=.+\])$

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

Пояснение

  • ^\[img - эта часть является общей для обеих строк, она будет соответствовать [img в начале строки
  • (?:\].+\[\/img\]|=.+\])$ - Это будет соответствовать 2 вариантам, в зависимости от самого первого символа

    • Первый вариант (первый символ ]) - В этом случае \].+\[\/img\]| будет сопоставлено. Это будет соответствовать всему (.+) между открывающим и закрывающим тегами [img] до окончательного соответствия самому закрывающему тегу.

    • Второй вариант (первый символ - =) - В этом случае =.+\] будет сопоставлено. Это захватывает все после img= и останавливается при достижении ].

    наконец, регулярное выражение соответствует концу строки.

Проверка демо

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