ここで何が間違っていますか?正規表現で無効な数量化のjavascriptエラー
私は文字列内の数字をjavascriptを使って別の数字に置き換えようとしています。私はそれに番号1を何度も持っている長い文字列を持っています。私は、1が2のいずれかに別の番号を持つ場合を除いて、すべての場合に1と2を置き換える必要があります。私はregexを使う方法についてたくさんのGoogle検索をしました(私は完全に正規表現に新しいです)。そしてこれを思いつきました。
string.replace(/(?<!\d)1(?!\d)/,2);
は基本的に、私は正規表現が一致(したがって置き換える)それは別の番号以外のものに囲まれている番号1のすべての発生します。マッチに周囲の文字を含めることは望ましくありません。数字は1だけです。
私のファイヤーブートコンソールでは無効な数量エラーが発生し続けます。私は間違って何をしていますか?
コロンはネガティブなルックバックの正しい演算子ですか?私は[link] http://www.regular-expressions.info/lookaround.htmlで否定的なlookbehindを行う方法を読んでいました。彼はltの文字を使用すると言います。あなたが言ったように私はそれをコロンと置き換えました。私はもはやエラーを取得しませんでしたが、いずれの一致も返しませんでしたか?最後のスラッシュの後にgを追加して、すべての発生に一致させようとしましたが、それでも動作しません。私はここでは無知だ。 – codescribblr
@Jonathan:いいえ、JavaScriptにはルック・バックがありません(先読みのみ、正と負の両方)。 '?:'は単にキャプチャしていないブロックを示します。 –
すばらしい説明!本当にありがとう。ここで私があなたが私に与えたものに基づいて終わったのです: 'var i = 1; \t $( "#のaddshipmentobjecbutton"()関数(){ \t \tをクリックします(私は= 5){ \t \t \t VAR old_object = $( '#のshipmentobject' <)であれば、HTML();。。 \t \t \t var new_object = old_object.replace(/(^!\ D)\ d(?!\ d)/ g、 "$" + i + 2); \t \t \t $( '#shipmentobjects')append( "
"); \t \t \ti ++; \t \t }); – codescribblr