Строка регулярного выражения не начинается и не заканчивается (или то и другое) с косой черты - PullRequest
0 голосов
/ 28 мая 2020

У меня есть это регулярное выражение для javascript, которое должно возвращать совпадение, когда строка не начинается или не заканчивается прямым sla sh (или обоими). Проблема в том, что он не возвращает совпадение, если я просто набираю один символ (например, 'g').

https://regex101.com/r/9Bi3uc/1

Выражение: (^[^/].*)(.*[^/]$)

Есть идеи, что я делаю не так?

1 Ответ

0 голосов
/ 28 мая 2020

Я считаю, что причина, по которой он не будет соответствовать одиночным символам, заключается в том, что у вас есть два экземпляра [^/] в вашем регулярном выражении. Это означает, что для правильного совпадения требуется как минимум два символа, не являющиеся косой чертой. Быстрое решение этой проблемы - использовать оператор OR с регулярным выражением для обработки этого случая. Вот модифицированная версия вашего регулярного выражения, которая соответствует всем вашим примерам:

((^[^/].*[^/]$)|^[^/]$)

Это можно разбить на два сегмента

(^[^/].*[^/]$)

эта первая часть является сокращенной версией вашей и будет захватывать любые строки длиной 2 или более, которые не начинаются и не заканчиваются sla sh.

Вторая часть на другой стороне оператор ИЛИ (|) - это ^[^/]$

Это будет соответствовать односимвольным строкам, которые не являются sla sh.

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