Boost logo

Boost Users :

From: Jean-Sebastien Vachon (js.vachon_at_[hidden])
Date: 2006-04-10 12:09:52


Hi All,

I'm trying to use the regex library in order to validate a generic
URI according to the regular expression specified in RFC 3986 - Uniform
Resource Identifier (URI): Generic Syntax.

Here is the expression:

      ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?

As far as I know this is a POSIX compliant regex. I'm building my
regex with the following flags:

boost::regex::basic | boost::regex::icase

Here is the complete code:

bool RegExPOSIXValidator::IsValid(const std::string &oName) const
{
/* -------------------------------------------------------------------- */
/* Build the Regular Expression */
/* -------------------------------------------------------------------- */

   boost::regex re(moRegex, boost::regex::basic | boost::regex::icase);
   return boost::regex_match(oName, re);
}

The function is returning false for the following URI:
http://dimitrov@www.google.ca:88/index1.html?name=dimitrov#title
Which seem valid to me. Unless there is something I don't see.

I try doubling the \ in front of the ? at the end of the expression
as a solution but it didn't help.

Any idea?


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net