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

JQuery удаляет специальные символы из строки и больше

У меня есть строка вроде этого:

var str = "I'm a very^ we!rd* Str!ng.";

Что я хотел бы сделать, это удалить все специальные символы из указанной выше строки и заменить пробелы, а в случае их ввода - подчеркивание - с символом.

Вышеуказанная строка будет выглядеть так после "преобразования":

var str = 'im-a-very-werd-strng';
4b9b3361

Ответ 1

replace(/[^a-z0-9\s]/gi, '') будет фильтровать строку до только буквенно-цифровых значений, а replace(/[_\s]/g, '-') заменяет символы подчеркивания и пробелы дефисом:

str.replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '-')

Источник для регулярного выражения: RegEx для Javascript, чтобы разрешить только буквенно-цифровые

Вот демо: http://jsfiddle.net/vNfrk/

Ответ 2

Предполагая, что "особый" означает не-словные символы, это довольно легко.

str = str.replace(/[_\W]+/g, "-")

Ответ 3

str.toLowerCase().replace(/[\*\^\'\!]/g, '').split(' ').join('-')

Ответ 4

Поскольку я не могу комментировать ответ Джаспера, я хотел бы указать на небольшую ошибку в его решении:

str.replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '-');

Проблема в том, что первый код удаляет все дефисы и затем пытается их заменить:) Вы должны отменить вызовы замещения, а также добавить дефис для второго повторного выражения. Вот так:

str.replace(/[_\s]/g, '-').replace(/[^a-z0-9-\s]/gi, '');

Ответ 5

Удалите числа, подчеркивания, белые пробелы и специальные символы из строкового предложения.

str.replace(/[0-9`[email protected]#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi,'');

Демо