Как написать функцию с регулярным выражением Oracle для проверки имени домена? - PullRequest
2 голосов
/ 22 октября 2010

Я хотел бы написать функцию PLSQL, которая возвращает true, если переданное мною имя домена допустимо.

Я должен использовать регулярное выражение, но я не знаю, как это сделать.

declare  
  ignore boolean;  
begin  
  isDomainSyntaxOk('www.laclasse.com'); --> should return true.   
  isDomainSyntaxOk('www.la classe.com'); --> should return false because of the space char.  
end;  

Есть идеи?

Ответы [ 3 ]

0 голосов
/ 04 ноября 2010

Танки за идею Адама Хоукса.Я нашел некоторый regExp, который делает то, что я хочу.Функция должна возвращать true в следующих случаях:

  • только буквенные символы.
  • accept '.'и '-', но не первый символ и не последний символ.

Это должно быть так:

function isSyntaxeDomaineOk(pDomain varchar2) return boolean is
begin
   return regexp_like(pDomain, '^[a-z0-9][-a-z.0-9]*[a-z0-9]$');
end isSyntaxeDomaineOk;
0 голосов
/ 04 ноября 2010

Я, наконец, изменил свою функцию, чтобы справиться с проблемой «..»:

function isSyntaxeDomaineOk(pStr varchar2, pChar4Space varchar2 default null) return boolean is
begin
    return regexp_like(pStr, '^[a-z0-9][-a-z.0-9]*[a-z0-9]$') 
                              and not regexp_like(pStr, '\.\.');
end isSyntaxeDomaineOk;

НТН.

0 голосов
/ 22 октября 2010

Мои навыки регулярных выражений слабые, поэтому я надеюсь, что кто-то придет и исправит это:

create or replace
FUNCTION IS_VALID_DOMAIN (p_DOMAIN IN VARCHAR2) RETURN BOOLEAN IS
BEGIN
  RETURN REGEXP_LIKE(p_DOMAIN, '^[a-z0-9][a-z.0-9]*[a-z]$');
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...