// 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)(?<=\b)\w([\w\.\-_0-9])*(@| at )[\w0-9][\w\-_0-9]*((\.| DOT )[\w\-_0-9]+)+(?=\b)").unwrap();
let string = "test@email.com
test-user@email.com
test.user@email.com
33test33@email.com
test99user-_22@email.com
test@e.mail
test@g.mail
test AT email.com
test AT email DOT com
test AT email dot com
test at email.com
test@email DOT com
this is not an email @twitterUser
this is just an an string el@
Valid
-------
first.last@iana.org
1234567890123456789012345678901234567890123456789012345678901234@iana.org
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x2
1234567890123456789012345678901234567890123456789012345678@12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.123456789012345678901234567890123456789012345678901234567890123.iana.org
user+mailbox@iana.org
customer/department@iana.org
customer/department=shipping@iana.org
cal(woo(yay)hoopla)@iamcal.com
cal(foo\\@bar)@iamcal.com
cal(foo\\)bar)@iamcal.com
first(Welcome to the (\"wonderful\" (!)) world of email)@iana.org
pete(his account)@silly.test(his host)
c@(Chris's host.)public.example
Invalid
---------
first@...........com
first.last@sub.do,com
first\\@last@iana.org
first.last
.first.last@iana.org
first.last.@iana.org
\"first\"last\"@iana.org
\"\"\"@iana.org
first\\\\@last@iana.org
Doug\\ \\\"Ace\\\"\\ Lovell@iana.org
()[]\\;:,><@iana.org
test@.
test@[123.123.123.123
test@123.123.123.123]";
// 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/