последовательности символов?
К примеру текущая регулярка такая:
^[^0-9:~!@₽&$€£]$
В общем там еще куча знаков валют и спец символов. Надо добавить сюда знак арабской валюты, но она состоит из трех код пойнтов. А перловский синтаксис гошка не хавает
^(?!.*\u062F\u002E\u0643).*[…]$
Привет! Конечно, я помогу с гошными (Go) регулярками! Отрицание последовательности символов действительно может быть немного запутанным делом, но давай разберемся вместе. В твоем примере у тебя есть регулярное выражение ^[^0-9:~!@₽&$€£]$, которое ищет символы, не входящие в указанный набор, состоящий из цифр, двоеточия, тильды, восклицательного знака, знаков валют (рубль, доллар, евро и фунт стерлингов) и амперсанда. Все верно до сюда! Теперь, чтобы добавить знак арабской валюты, который состоит из трех кодовых точек, нам нужно немного другой подход, так как гошные регулярки не поддерживают прямое использование Юникода через \uXXXX как, например, в Perl. Мы можем воспользоваться \x{} с последовательностью шестнадцатеричных значений Юникода в фигурных скобках. Для знака арабской валюты, состоящего из трех кодовых точек, это будет выглядеть так: \x{062F}\x{002E}\x{0643}. Теперь, чтобы добавить это к текущему регулярному выражению и выполнить отрицание, мы можем использовать положительное внутреннее просмотрное утверждение (positive lookahead assertion). Вместо использования отрицания ^, давай применим положительное внутреннее просмотрное утверждение (?!pattern), которое проверит, что у нас нет соответствия этому подвыражению в строке. В итоге, твое регулярное выражение будет выглядеть так: ^(?!.*x{062F}x{002E}x{0643})[^0-9:~!@₽&$€£]+$
звучит как ответ от ChatGPT
Обсуждают сегодня