私はこのような文字列を持っています:
var str = "I'm a very^ we!rd* Str!ng.";
私がやりたいのは、上記の文字列からすべての特殊文字を削除し、スペースを置き換え、それらが入力されている場合はアンダースコアを-文字で置き換えることです。
上記の文字列は、「変換」の後、次のようになります。
var str = 'im-a-very-werd-strng';
replace(/[^a-z0-9\s]/gi, '')
は文字列を英数字値にフィルターし、replace(/[_\s]/g, '-')
はアンダースコアとスペースをハイフンに置き換えます:
str.replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '-')
正規表現のソース: 英数字のみを許可するJavascriptの正規表現
デモは次のとおりです。 http://jsfiddle.net/vNfrk/
「特殊」とは、Word以外の文字を意味すると仮定すると、それは非常に簡単です。
str = str.replace(/[_\W]+/g, "-")
str.toLowerCase().replace(/[\*\^\'\!]/g, '').split(' ').join('-')
Jqueryのすべての特殊文字を削除/置換します。
str =私の名前は「Ghanshyam」であり、「Java」からの背景
すべての特殊文字( ")を削除してから使用したい
str = str.replace(/ "/ g、 '')
result:私の名前はGhanshyamで、Java background
Gはグローバル@Thanksを意味します
Jasperの答えにコメントすることはできないので、彼のソリューションの小さなバグを指摘したいと思います。
str.replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '-');
問題は、最初のコードがすべてのハイフンを削除してから置換しようとすることです:)置換呼び出しを逆にし、2番目の置換正規表現にハイフンを追加する必要があります。このような:
str.replace(/[_\s]/g, '-').replace(/[^a-z0-9-\s]/gi, '');