-- Leo's gemini proxy
-- Connecting to gemini.clehaxze.tw:1965...
-- Connected
-- Sending request
-- Meta line: 20 text/gemini
Qucik one. Something I want to write down before I forget. Validating email addresses have been a constant pain for software developers. The RFC spec for a valid email is complex. No, it's not simply `^\S+@\S+\.\S+$`. For example. The spec prohibits email addresses on TLD. Thus `bob@example` is not valid. There's a very helpful post on the internet that shares how to validate on using regex.
There's some discussion to have as there's edge cases that are not covered. But it's good enough. One problem. The site does not share how to do this in C++. That's what this post is about.
C++'s standard regex library by default runs in ECMAScript mode. But with different syntax of creating regex. Some quick adoption yields the following code
static const std::regex email_regex(R"(^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$)"); std::smatch match; if(!std::regex_match(email, match, email_regex)) { // invalid email }
You have it! Happy coding!
==========
Okay, C++'s regex library is known to be slow. Replace it with Boost's and done.
-- Response ended
-- Page fetched on Sat May 18 07:45:37 2024