Ответ 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 ".