1

Visual Studio 2010 でプロジェクト内のすべてのバリデーターを見つけようとしました。

<asp:RequiredFieldValidator
    ID="validator"
    runat="server"
    ErrorMessage="*"
    ControlToValidate="control"
    Display="Static"
    ValidationGroup="main">*</asp:RequiredFieldValidator>

また

<asp:RequiredFieldValidator
    ID="validator"
    runat="server"
    ErrorMessage="*"
    ControlToValidate="control"
    Display="Static"
    ValidationGroup="main"
    Text="*"/>

以下のバリデーターを試してみましたが、結果はありませんでした:

(\<asp\:[a-zA-Z]*Validator)~((.|\n)*ValidationGroup)(.|\n)*\/\>
(\<asp\:[a-zA-Z]*Validator)~(ValidationGroup)(.|\n)*(\<\/asp\:[a-zA-Z]*Validator\>)$

それらにバグはありますか?

編集:

私は以下をうまく試しました(ただし、サイトhttp://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashxのみ):

\<asp\:[a-zA-Z]*Validator(?![^/]*ValidationGroup)[^/]*\<\/asp\:[a-zA-Z]*Validator\>

しかし、私が交換したとき?~ を使用しても、Visual Studio ではまだ機能しません。

しかし、おそらくmellamokbが正解を投稿しました!

4

2 に答える 2

1

最初のケースで機能するように見えるこのVS正規表現を作成しました:

(\<asp\:[a-zA-Z]*Validator)((:b|\n)+~(ValidationGroup)[a-zA-Z]+="[^"]*")+\>

私はあなたの基本的な考え方を採用し、式を使用して各属性を個別に検索しました(:b|\n)+[a-zA-Z]+\"[^"]*"。次に、倍数を検索してすべての属性を取得し、最後に a を追加し~(ValidationGroup)て、いずれかの属性の名前が ValidationGroup である場合に一致が完了しないようにします。

于 2012-04-23T17:53:31.113 に答える
0

これもうまくいくかもしれません。

  < [A-Za-z_:][\w:.-]*Validator
    (?=\s) 
    (?!
      (?:[^>"']|"[^"]*"|'[^']*')*? (?<=\s)
      ValidationGroup \s*=
    )
    (?> \s+ (?:".*?"|\'.*?\'|[^>]*?)+ 
  >
    ) (?<= /> )
|
  < ([A-Za-z_:][\w:.-]*Validator)
    (?=\s) 
    (?!
      (?:[^>"']|"[^"]*"|'[^']*')*? (?<=\s)
      ValidationGroup \s*=
    )
    (?> \s+ (?:".*?"|\'.*?\'|[^>]*?)+ 
  >
    ) (?<! /> )
  .*?
  </\1 \s*>
于 2012-04-23T21:15:10.123 に答える