2017-01-25 8 views
0

javascriptでいくつかの文字をエスケープしてからクリーンな文字列を返す関数を開発する必要があります。一部の文字をエスケープする正規表現のJavaScript

this is a [string] that^contains some ? chars 

this is a \\[string\\] that \\^ contains some \\? chars 

敬具

:\

からで

^ * + ? [ ] 

は、例えば、私はこれらすべての文字を前に付ける必要があります

+0

を免れました? –

答えて

2

あなたはそうするREGEXを使用することができます。

'asdas^asdas [asd]'.replace(/([\^\*\+\?\[\]])/g, '\\$1') 

は説明:

  • (:これら
  • \^\*\+\?\[\]のいずれか::あなたが望むすべての文字グループ
  • [をキャプチャ、エスケープ
  • .replace:一致するものを置き換えます(任意の文字uは、選択した
  • //単一のスラッシュで始まる最初のキャプチャグループは、グループに
  • $1をキャプチャ保存し、あなたがechapまたはエスケープ意味
+0

ありがとうLuan私はあなたの正規表現を試しましたが、** asdas \^asdas \ [asd \] ** –

+0

を返します。ここではasdas \^asdas \ [asd \] "'を返します。私はクロームコンソールとノードv6.4.0を試しています。ダブルスラッシュを使用する場合は、置換部分( ''\\\\ $ 1'')に四重スラッシュ(エスケープ)を使用します。大括弧がエスケープされていないことを確かめますか?どのような正確なコードを実行していますか? –

+0

私はこれを試しました** 'asdas^asdas [asd]'を置き換えます(/([\^\ * \ + \?\ [\])/ g、 '\\\\ $ 1')** –

関連する問題