using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(?<=<[^>]*)(?<=\s)(on\w+|formaction|action)=[""']?(.*?)[""']?(?=[\n>])";
string input = @"<img src=""/name"">
<a href=""javascript:void"">some url</a>
<a href=""https://convertkit.com"">URL</a>
<img src=x onerror=""alert(document.domain)"">
<img src=x onerror="" alert(document.domain) "">
<img src=x
onerror=""alert(document.domain)""
>
<img src=x onerror=alert(document.domain)>
<button form=""form1"" formaction=""javascript:alert(1)"">Submit</button>
<form action=""></form>
<button onclick=""hacked()"">Hack</button>
<a href=""https://convertkit.com/about?utm_content=bazard"">click men</a>
<div>onmouseover=alert(1)</div>
<div> onmouseover=alert(1) </div>";
RegexOptions options = RegexOptions.Multiline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx