Если у Вас есть код C, Вы хотите портировать на C++, Вы могли бы оставить любой malloc () вызовами в нем. Для любого нового кода C++ я рекомендовал бы использовать новый вместо этого.
Наткнулся на это:
validates_format_of :domain_name, :with => /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/ix
FYI: Rubular - отличный ресурс для тестирования регулярных выражений Ruby
According to google, this one works nicely:
/^([a-z0-9]([-a-z0-9]*[a-z0-9])?\\.)+((a[cdefgilmnoqrstuwxz]|aero|arpa)|(b[abdefghijmnorstvwyz]|biz)|(c[acdfghiklmnorsuvxyz]|cat|com|coop)|d[ejkmoz]|(e[ceghrstu]|edu)|f[ijkmor]|(g[abdefghilmnpqrstuwy]|gov)|h[kmnrtu]|(i[delmnoqrst]|info|int)|(j[emop]|jobs)|k[eghimnprwyz]|l[abcikrstuvy]|(m[acdghklmnopqrstuvwxyz]|mil|mobi|museum)|(n[acefgilopruz]|name|net)|(om|org)|(p[aefghklmnrstwy]|pro)|qa|r[eouw]|s[abcdeghijklmnortvyz]|(t[cdfghjklmnoprtvwz]|travel)|u[agkmsyz]|v[aceginu]|w[fs]|y[etu]|z[amw])$/i
A bit lengthy...
It's case-insensitive...it doesn't look like your regexes are, but I don't know Ruby. Or maybe you capitalized them earlier.
Вот регулярное выражение, используемое henrik validates_url_format_of Rails валидатором :
REGEXP = %r{
\A
https?:// # http:// or https://
([^\s:@]+:[^\s:@]*@)? # optional username:pw@
( ((#{ALNUM}+\.)*xn---*)?#{ALNUM}+([-.]#{ALNUM}+)*\.[a-z]{2,6}\.? | # domain (including Punycode/IDN)...
#{IPv4_PART}(\.#{IPv4_PART}){3} ) # or IPv4
(:\d{1,5})? # optional port
([/?]\S*)? # optional /whatever or ?whatever
\Z
}iux
Попробуйте настроить шаблон так, чтобы они начинались с ^ (символ "начинается с") и заканчивались на $ ("заканчивается на"), чтобы весь шаблон читал "строку, которая начинается с этого и затем заканчивается », иначе совпадение, скажем, по имени будет положительным совпадением, если шаблон вообще найден (т.е. имеет один единственный правильный символ).
Я взял то, что у вас было, и изменил его, чтобы я мог сделать http: //
или https: //
необязательно:
/^((http|https):\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/ix