2017-02-22 21 views
0

type="submit"を使用してフォーム要素を無視するようにRegExの絞り込みを行っています。私は要素の部分をclass="*"まで選択したいだけですが、type = "submit"がそのクラスの前後にある場合は無視します。これまで文字列パターンを含む正規表現除外一致

私の正規表現:

(<(?:input|select|textarea){1}.*[^type="submit"]class=")(((?!form\-control)[a-zA-Z0-9_ -])*") 

テストケース: ラインは、1クラスの最後まで一致する必要があり、ライン2は無視します。

<input type="text" name="name" id="test" class="example-class" max-length="7" required="required"> 
<input type="submit" class="btn-primary" value="send"> 

これは有効ですか?

+0

この正規表現をどの言語で使用していますか? – gms0ulman

+0

私はアトムテキストエディタ検索と置換ツールを使用してバッチHTMLの変更を実行しています。これはスクリプトの一部ではありません。私はhttp://regexr.com/を使用して正規表現を構築しています – Kiee

+0

なぜ多くの人が '... {1}'を使用していますか?これはどう変わると思いますか? – Fallenhero

答えて

0

ご意見ありがとうございます。その答えは否定的な見方だった。正規表現の先頭に(?!.*type="submit.*)を追加

は私に私の望ましい結果を与えているように見えます。

ワーキング正規表現:

(?!.*type="submit.*)(<(?:input|select|textarea).*class=")(((?!form\-control)[a-zA-Z0-9_ -])*") 
+0

有効なHTMLパーサーを使用するプログラムはさらに意味があります –

+0

なぜHTMLパーサが参照され続けるのかわかりません。私は、プロジェクト全体の検索を実行し、正規表現パターンを使用して複数のHTMLファイルを置き換えたいです。このシナリオにはHTMLパーサはまだ関連していますか? – Kiee

+0

絶対に。任意の言語で小さなスクリプトを書いて、フォルダ内の多くのファイルを検索することができます。それはあなたのニーズにかかっています。 –

0
(<(?:input|select|textarea)\s((?!type="submit")[\w\-]+\b="[^"]*"\s?)*>) 

この式は、単一のタグにバインドされています。
.*のような式は避けてください。これは、さらに進んで1つのタグ内で開始し、別のタグの内側で終わる文字列に一致することができるためです。

関連する問題