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

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

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

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

Например:

name = "collection1234"; //=> collection234

или

name = "1234567"; //=> 234567

Ответ 1

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

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

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

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

Ответ 2

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

var name = name.replace(/[[email protected]#$%^&*]/g, "");

Ответ 3

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

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

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

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

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

Ответ 4

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]", ""));

Ответ 5

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

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

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

печать (newtext)

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