Подтвердить что ты не робот

Javascript url-safe filename-safe string

Не очень хорошо при работе с регулярным выражением, ища функцию регулярного выражения/замены, чтобы ввести введенную пользователем строку, скажите "John Smith Cool Page" и верните безопасную строку имени файла /url, например "john_smith_s_cool_page.html", или что-то вроде в той степени.

Мне кажется, что это должно быть простоя, но ничего не найдено в моих поисках в Google/StackOverFlow.

4b9b3361

Ответ 1

Ну, вот тот, который заменяет все, что не буква или число, и делает все нижним регистром, как ваш пример.

var s = "John Smith Cool Page";
var filename = s.replace(/[^a-z0-9]/gi, '_').toLowerCase();

Пояснение:

Регулярное выражение /[^a-z0-9]/gi. Ну, на самом деле gi в конце - это всего лишь набор опций, которые используются, когда выражение используется.

  • i означает "игнорировать различия в верхнем/нижнем регистре"
  • g означает "глобальный", что на самом деле означает, что каждое соответствие должно быть заменено не только первым.

То, что мы смотрим, действительно просто [^a-z0-9]. Пусть пошаговое чтение:

  • [ и ] определяют "класс символов", который представляет собой список одиночных символов. Если вы напишете [one], то это будет соответствовать либо "o", либо "n" или "e".
  • Однако в начале списка символов есть ^. Это означает, что он должен соответствовать только символам не в списке.
  • Наконец, список символов a-z0-9. Прочитайте это как "a через z и от 0 до 9". Это короткий способ написания abcdefghijklmnopqrstuvwxyz0123456789.

Итак, в основном, что говорит регулярное выражение: "Найдите каждую букву, которая не находится между" a "и" z ", или между" 0 "и" 9 ".

Ответ 2

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

Взгляните на код в node -sanitize-filename для более надежного решения.

Ответ 3

Я думаю, что ваше требование заключается в замене белых пространств и aphostophy `s на _ и добавление .html в конце попытаться найти такое регулярное выражение.

отсылайте

http://www.regular-expressions.info/javascriptexample.html