Regex удалить все специальные символы, кроме чисел?

16

Я хотел бы удалить все специальные символы (кроме чисел) из строки. Я смог зайти так далеко

var name = name.replace(/[^a-zA-Z ]/, "");

но кажется, что он удаляет первое число и оставляет всех остальных.

Например:

name = "collection1234"; //=> collection234

или

name = "1234567"; //=> 234567
  • 4
    Все персонажи по-своему особенные, это то, что мне всегда говорила мама. Что для вас значат «специальные символы»?
  • 0
    @sln, что ты имеешь в виду?
Теги:

5 ответов

34
Лучший ответ

Использовать глобальный флаг:

var name = name.replace(/[^a-zA-Z ]/g, "");
                                    ^

Если вы не хотите удалять номера, добавьте их в класс:

var name = name.replace(/[^a-zA-Z0-9 ]/g, "");
  • 1
    Наверное, я неправильно спросил, я хочу оставить все числа в строке, но только специальные символы! @ # $% ^ & * (поэтому collection#24 would return collection24
  • 2
    @EHerman Забудь, какие символы ты хочешь раздеть. «Специальные символы» очень неточны. Какие символы вы хотите сохранить?
Показать ещё 2 комментария
14

Чтобы удалить специальные символы, попробуйте

var name = name.replace(/[!@#$%^&*]/g, "");
  • 0
    +1 - ответ. Althouth, его более эффективно с модификатором + .
  • 1
    Это не удалит пробелы!
5

Если вы не возражаете, включая подчеркивание как разрешенный символ, вы можете попробовать просто:

result = subject.replace(/\W+/g, "");

Если подчеркивание также должно быть исключено, тогда

result = subject.replace(/[^A-Z0-9]+/ig, "");

(Обратите внимание на регистр, нечувствительный к регистру)

0

Это должно работать также

текст = 'машина? был большой и * красный!

newtext = re.sub('[^ a-z0-9]', '', текст)

печать (newtext)

машина была большая и красная

0
I need to write the regular expression for the String 10.00% to be converted into 
string as 10
Please provide the regular expression in Java code 

String temp ="10.00%";
System.out.println(temp.replaceAll("[^\\w]", ""));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню