JQuery удаляет специальные символы из строки и больше
У меня есть строка вроде этого:
var str = "I'm a very^ we!rd* Str!ng.";
Что я хотел бы сделать, это удалить все специальные символы из указанной выше строки и заменить пробелы, а в случае их ввода - подчеркивание - с символом.
Вышеуказанная строка будет выглядеть так после "преобразования":
var str = 'im-a-very-werd-strng';
Ответы
Ответ 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,'');
Демо