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

Regex string replace

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

Я использую str = str.replace(/[^a-z0-9+]/g, ''); на данный момент. Но то, что я хотел бы сделать, это разрешить все буквенно-цифровые символы (a-z и 0-9), а также символ "-".

Не могли бы вы ответить на это и объяснить, как вы объединяете выражения.

4b9b3361

Ответ 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, "");