Удаление / замена зарезервированных или недействительных символов URL в строке - PullRequest
0 голосов
/ 23 января 2019

Я в процессе создания sef url для моего приложения. Я только что столкнулся с ошибкой, когда один из моих объектов содержит следующие символы:

@#!*

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

@_!*

Я планировал использовать это регулярное выражение для фильтрации плохих символов:

[^]A-Za-z0-9_.~!*''();:@&=+$,/?#[%-]+

и сделать замену через gsub

'@#!*'.gsub!(/[^]_.~!*''();:@&=+$,/?#[%-]+/, '_')

Но ничего не возвращается вообще. Что здесь происходит?

1 Ответ

0 голосов
/ 23 января 2019
'<@#_!*>'.gsub(/[\[\]^A-Za-z0-9.~!*''();:@&=+$,\/?#%+-]/, '_')
  #=> "<_____>" 

'[', ']' и '/' должны быть экранированы, '-' должно быть в начале или конце класса символов, а '^' не может быть в начале класса символов (класс символов, обозначаемый внешними символами '[' и ']').Нет смысла заменять '' на '', поэтому я не включил этот символ в класс символов.

Хотите ли вы также заменить '<' и '>'?Вы уверены, что буквы и цифры "зарезервированные символы"?

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