2017-01-26 9 views
0

で囲まれた特殊文字をエスケープするためにJavaScriptで置き換え、私は*とinput[name='*']は何でもかまいませんようにパターンが常になり、次の正規表現は、私のJavaScriptファイルには、単一引用符

stringToBeReplaced = input[name='Wanna Be Startin' Somethin''] 

stringToBeReplaced = input[name='They Don't Care About Us'] 

stringToBeReplaced = input[name='Workin' Day & Night'] 

のような値をとる変数を持っています。 私が達成しようとしているのは、*フィールドに現れる単一引用符とアンパサンド( '&)のみをエスケープし、regex replaceを使用して囲む単一引用符をエスケープしないことです。

私が今までに作成した正規表現は以下の通りです。まだ保留中のものは、上のパターンの最初の一重引用符を無視することです。つまり、記号の前にある一重引用符

stringToBeReplaced.replace(/((['&])(?!\]))/g,'\\$1')); 

ご協力いただきありがとうございます。 ]を閉じるための前方の負の外観を文字クラスで目的の文字を選択し、グループ内の

(?!])をキャプチャ=

(['&])ための背後

(?<!=)(['&])(?!]) 

(?<!=)負の表情:

+1

古い値だったものの一例を示した場合、それは大いに役立つだろう、とその所望の出力が何でありますか特定の例 – Ahmad

+0

また、全体のコンテキストについてもう少し説明できますか。 CSSセレクタのように見えるこれらの文字列はどこから来ますか?なぜあなたは明らかに 'name'属性を一種のタイトルや説明として使用していますか?あなたは 'input [name =]'文字列全体を得る前に、より早い時点でエスケープすることができますか?なぜあなたは '&'から逃げ出す必要があると思いますか? –

+0

jQuery.findメソッドは、jQuery 1.8以前のバージョンで動作していたアプリケーションでは失敗します(これは、アップグレードされたjQuery 1.11が現在使用されているかどうかはわかりません)。 &は本当に必要ではありませんが、複数の特殊文字をサポートするための正規表現が含まれています。 – user3641136

答えて

0

あなたはこのように試すことができます

R

\とキャプチャグループ

デモ:とeplace

https://regex101.com/r/CQbwtF/5

+0

それを解剖していただきありがとうございます。しかし、これはPHPの正規表現であり、JSのために有効ではないようです – user3641136

関連する問題