1

私はこれを得た:

var stringToReplace = 'æøasdasd\89-asdasd sse';
var desired = stringToReplace.replace(/[^\w\s]/gi, '');
alert(desired);

別のSOの質問から置換ルールを見つけました。

これは正常に機能し、出力が得られます。

asdasd89asdasd sse

追加のルールを設定したいのですが:

  1. æøå文字を保持する
  2. -キャラクターをキープ
  3. 空白/スペースを-文字に変換する

したがって、出力は次のようになります。

æøåasdasd89-asdasd-sse

追加の行を実行できることはわかっています: stringtoReplace.replace(' ', '-');

私の3)の目標を達成するために-しかし、私は正規表現に興味がないので、1と2)をどうするかわかりませんか?

4

3 に答える 3

2

これはうまくいくはずです:

str = str.replace(/[^æøå\w -]+/g, '').replace(/ +/g, '-');

ライブデモ: http://ideone.com/d60qrX

于 2013-10-28T20:34:16.773 に答える
1

特殊文字を除外リストに追加するだけです。

/[^\w\sæøå-]/gi

ここで例をいじります。

そして、あなたが言ったように、別の置換を使用してスペースをダッシュ​​に置き換えることができます

于 2013-10-28T20:34:01.263 に答える
0

元の正規表現[^\w\s]は、単語または空白文字 (-など) ではない任意の文字を対象としています。この正規表現の「ホワイトリスト」に他の文字を含めるには、その文字グループに追加するだけです。

stringToReplace.replace(/[^\w\sæøå-]/gi, '');

スペースをハイフンに置き換えることに関しては、単一の正規表現で両方を行うことはできません。ただし、後で文字列置換を使用して解決できます。

stringToReplace.replace(" ","-"); 
于 2013-10-28T20:35:22.700 に答える