2011-01-15 6 views
1

ich den folgenden regulären Ausdruck geschrieben habe Ansichtszustand ausgeblendeten Felder aus htmlregulärer Ausdruck versteckte Felder entfernen

Regex.Replace(html, "<input[^>]*id=\"__VIEWSTATE\"[^>]*>", string.Empty, RegexOptions.IgnoreCase); 

Wie kann ich ändern, dies zu schließen, __EVENTTARGET, __EVENTARGUMENT, __EVENTVALIDATION im regulären Ausdruck zu entfernen?

Antwort

1
Regex.Replace(html, "<input[^>]*id=\"(__VIEWSTATE|__EVENTTARGET|__EVENTARGUMENT|__EVENTVALIDATION)\"[^>]*>", string.Empty, RegexOptions.IgnoreCase); 

Leicht verständlich und erweiterbar.

0

Sie könnten hinzufügen, um alle Elemente einer Liste, und dann durch sie wie folgt durchlaufen:

var items = new List { "__VIEWSTATE", "__EVENTTARGET", "__EVENTARGUMENT", "__EVENTVALIDATION" }; 

foreach (item in items) { 
    Regex.Replace(html, string.format("<input[^>]*id=\"{0}\"[^>]*>", item), string.Empty, RegexOptions.IgnoreCase); 
} 

finde ich Code leichter zu verstehen, wenn ich über sie in Code kam, wie zu einer Sammlung Gegensatz von OR'd Aussagen.

0

"<input[^>]*id=\"__(?:VIEWSTATE|(?:EVENT(?:TARGET|ARGUMENT|VALIDATION)))\"[^>]*>"