2017-08-21 9 views
-1

私はこのような中括弧と文字列にタグを挿入しています:挿入した後、その場合の{tag1}肯定先読みと否定一緒lookeahead conditionaly

文字列は次のようになります。hello {tag1}, it's {tag2} today.

私は予防したい

タグはいえ交差したときに、これは私が望んでいない:{tag{tag2}1}

を私は肯定先読み(?={\w+})だけでなく、負の先読み(?!{\w+{)(?!}\w+})

したいのですが

たとえば、textareaにはすでにhello {tag1}.が含まれており、位置8に{tag2}を挿入しようとすると、hello {ta{tag2}g1}.になります。そのため、偽を返すRegexが必要です。

これらのルールを一緒にマージすることはできませんでした。たぶん私はそれをすべて間違って見ている。

+0

共有コードを参照してください無効であると一致した場合、重複が発生

{[^{}]*{.*}[^{}]*} 

をとっているかどうかを確認するために、この正規表現を使用することができます。同じ文字列を何度も処理しないようにするには、すべてのタグを1回のパスで挿入する必要があります。ところで、これを解決するための最善の方法ではないでしょう(ほとんどの場合、 '(?![^ {})*})'はうまくいくはずです)。 –

+0

あなたは正しいですが、挿入時に、閉じた中かっこが残っているかどうかを確認することができます。条件が満たされた場合は挿入を続け、そうでない場合は終了します。 – Bogac

+0

コードを共有してください。正規表現関連の部分だけ? –

答えて

0

あなたはこの文字列が、 がdemo

+0

を使用してください。ルールが適用され、グループではない場合、文字列全体をチェックするようにすることはできますか?これは、私のユースケースでフォームの検証に便利です。 – Bogac

+0

更新された回答を確認してください – marvel308

+0

私はユースケースの例で質問を更新しました。あなたの正規表現は部分一致のために正しいです、私は全体の文字列をチェックしたいと思います。 – Bogac

関連する問題