// include the latest version of the regex crate in your Cargo.toml
extern crate regex;
use regex::Regex;
fn main() {
let regex = Regex::new(r#"(?mi)<{1}\w+[\w\s\'\"\=]*(on[^=-\s]+)=["']([\S\w\d]*|[\S\w\d ]*)["']>{1}"#).unwrap();
let string = "<video><source onerror=\"alert(1)\"> <img onerror=\"alert(shouldMatch)\">
onerror=\"shouldnt match\"
<img alt=\"\" onerror=\"alert(2>4)\">
<img onerror=\"alert(2<4)\"><img onerror=\"alert(2<4)\">
<img onerror=\"alert(!@#$%^&*() <> \"\"''?|\\/}{][=-_)\">
<img onerror=\"alert()\">
<img onerror=\"(function{}())\">
<img onerror=\"\">
<img onerror=\"asdasdasd(){}((({}0123><456789!@#$%^&*()_+qwertyuiop[]asdfghjkl;'\\/.,mnbvcxz\\|ZXCVBNM<>?|\":LKJHGFDSAQWERTYUIOP{}``~~\">
<asd><img onerror=\"(function{}())\">
<img diabled alt=\"asd\" onerror=\"(function{}())\"> ";
// result will be an iterator over tuples containing the start and end indices for each match in the string
let result = regex.captures_iter(string);
for mat in result {
println!("{:?}", mat);
}
}
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 Rust, please visit: https://docs.rs/regex/latest/regex/