9

すべての特殊文字「~!@#$%^&*()_+=`{}[]|:;'<>,./?」を置き換える必要がある文字列があります。およびハイフン付きのスペース。行内の複数の特殊文字は、単一のハイフンになります。

var mystring="Need !@#$%^\" to /replace  this*(){}{}|\><? with_new string ";
// desired output: "Need-to-replace-this-with-new-string"

現在、私はこの一連のreplace()呼び出しを使用しています:

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

しかし、それはこれを出力しています:

Need----------to/replace-this--------with-new-string;

ここでは、スラッシュを除く文字列内のすべての特殊文字にハイフンを追加しています。

4

2 に答える 2

14

私はお勧めします:

var inputString = "~!@#$%^&*()_+=`{}[]|\:;'<>,./?Some actual text to keep, maybe...",
    outputString = inputString.replace(/([~!@#$%^&*()_+=`{}\[\]\|\\:;'<>,.\/? ])+/g, '-').replace(/^(-)+|(-)+$/g,'');
console.log(outputString);

JS フィドルのデモ

于 2013-09-21T19:35:53.377 に答える
8

あなたのコメントと例によると:

return mystring.trim().replace(/["~!@#$%^&*\(\)_+=`{}\[\]\|\\:;'<>,.\/?"\- \t\r\n]+/g, '-');

または英数字以外のすべての文字を置き換えるには:

return mystring.trim().replace(/[^a-z0-9]+/gi, '-');

以下を追加することもできます。

.replace(/^-+/, '').replace(/-+$/, '');

先頭または末尾のダッシュを削除します (この時点で を呼び出す必要はありませんtrim())。

例:

function cleanUp(st) {
  return st.
     replace(/[^a-z0-9]+/gi, '-').
     replace(/^-+/, '').
     replace(/-+$/, '');
}

var mystring="Need !@#$%^\" to /replace  this*(){}{}|\><? with_new string ";

console.log( cleanUp(mystring) );

于 2013-09-21T19:31:01.940 に答える