Regex string replace
Я пытаюсь выполнить замену базовой строки с помощью выражения регулярного выражения, но ответы, которые я нашел, похоже, не помогают - они напрямую отвечают каждому уникальному требованию каждого человека с небольшим или никаким объяснением.
Я использую str = str.replace(/[^a-z0-9+]/g, '');
на данный момент. Но то, что я хотел бы сделать, это разрешить все буквенно-цифровые символы (a-z и 0-9), а также символ "-".
Не могли бы вы ответить на это и объяснить, как вы объединяете выражения.
Ответы
Ответ 1
Это должно работать:
str = str.replace(/[^a-z0-9-]/g, '');
Все, что указано, указывает, что вы ищете
-
/
здесь, чтобы разграничить ваш шаблон, чтобы вы могли его запустить, а один - для завершения.
-
[]
указывает шаблон, который вы ищете на одном конкретном символе.
-
^
указывает, что вы хотите, чтобы каждый символ НЕ соответствовал следующему.
-
a-z
соответствует любому символу между 'a' и 'z' включенными
-
0-9
соответствует любой цифре между включенными "0" и "9" (что означает любую цифру)
-
-
символ '-'
-
g
в конце - это специальный параметр, указывающий, что вы не хотите, чтобы ваше регулярное выражение останавливалось на первом символе, соответствующем вашему шаблону, но чтобы продолжить по всей строке
Затем ваше выражение делится на /
до и после.
Итак, здесь вы говорите: "Каждый символ, не являющийся буквой, цифрой или" - "будет удален из строки".
Ответ 2
Просто измените +
на -
:
str = str.replace(/[^a-z0-9-]/g, "");
Вы можете прочитать это как:
-
[^ ]
: соответствие NOT из набора
-
[^a-z0-9-]
: совпадение, если не a-z
, 0-9
или -
-
/ /g
: выполнить глобальное соответствие
Дополнительная информация:
Ответ 3
Ваш класс символов (часть в квадратных скобках) говорит, что вы хотите сопоставить что-либо, кроме 0-9 и a-z и+. Вы не указали, сколько a-z или 0-9 вы хотите сопоставить, но я предполагаю, что значение + означает, что вы хотите заменить строки по меньшей мере одним буквенно-цифровым символом. Он должен читать вместо этого:
str = str.replace(/[^-a-z0-9]+/g, "");
Кроме того, если вам нужно совместить прописные буквы вместе с нижним регистром, вы должны использовать:
str = str.replace(/[^-a-zA-Z0-9]+/g, "");