web-dev-qa-db-ja.com

jQueryは文字列などから特殊文字を削除します

私はこのような文字列を持っています:

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

私がやりたいのは、上記の文字列からすべての特殊文字を削除し、スペースを置き換え、それらが入力されている場合はアンダースコアを-文字で置き換えることです。

上記の文字列は、「変換」の後、次のようになります。

var str = 'im-a-very-werd-strng';
54
Roel

replace(/[^a-z0-9\s]/gi, '')は文字列を英数字値にフィルターし、replace(/[_\s]/g, '-')はアンダースコアとスペースをハイフンに置き換えます:

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

正規表現のソース: 英数字のみを許可するJavascriptの正規表現

デモは次のとおりです。 http://jsfiddle.net/vNfrk/

113
Jasper

「特殊」とは、Word以外の文字を意味すると仮定すると、それは非常に簡単です。

str = str.replace(/[_\W]+/g, "-")
24
Ilia G
str.toLowerCase().replace(/[\*\^\'\!]/g, '').split(' ').join('-')
13
Grace Shao

文字列文から数字、アンダースコア、空白、特殊文字を削除します。

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

デモ

3

Jqueryのすべての特殊文字を削除/置換します。

str =私の名前は「Ghanshyam」であり、「Java」からの背景

すべての特殊文字( ")を削除してから使用したい

str = str.replace(/ "/ g、 '')

result:私の名前はGhanshyamで、Java background

Gはグローバル@Thanksを意味します

1
ghanshyam singh

Jasperの答えにコメントすることはできないので、彼のソリューションの小さなバグを指摘したいと思います。

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

問題は、最初のコードがすべてのハイフンを削除してから置換しようとすることです:)置換呼び出しを逆にし、2番目の置換正規表現にハイフンを追加する必要があります。このような:

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