// 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"(?m)^([a-z][a-z0-9]{1,13}[_.\-]?[a-z0-9]{1,13})@((([0-9]{1,3})([.]{1})([0-9]{1,3})([.]{1})([0-9]{1,3})([.]{1})([0-9]{1,3}))|([a-z0-9]{1,10}[\-]?[a-z0-9]{1,10}[.]?[a-z0-9-]{1,10}[.]{1}[a-z]{2,4}))$").unwrap();
let string = "//Valid
john.doe@mail.com
johndoe@mail.com
john-doe@mail.com
john_doe@mail.com
john123doe@mail.com
john123.doe@mail.com
johndoe456@mail.com
abc-d@mail.com
test@test.domain.com
test@127.1.1.1
test@test.domain.shop
// Invalid
abc-@mail.com
abc..def@mail.com
.abc@mail.com
abc#def@mail.com
123abc-d@mail.com
ABc@mail.com
test@sub.test.domain.com
test@test.domain.c";
// 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/