代码之家  ›  专栏  ›  技术社区  ›  Pierre-Gilles Levallois

如何使用Oracle regexp编写函数来测试域名称?

  •  2
  • Pierre-Gilles Levallois  · 技术社区  · 15 年前

    我想写一个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 回复  |  直到 15 年前
        1
  •  0
  •   No AI now No AI ever    15 年前

    我的regex技能很弱,所以我希望有人能来解决这个问题:

    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;
    
        2
  •  0
  •   Pierre-Gilles Levallois    15 年前

    • 只有字母数字字符。
    • 接受“.”和“-”,但不接受第一个字符,也不接受最后一个字符。

    应该是这样的:

    function isSyntaxeDomaineOk(pDomain varchar2) return boolean is
    begin
       return regexp_like(pDomain, '^[a-z0-9][-a-z.0-9]*[a-z0-9]$');
    end isSyntaxeDomaineOk;
    
        3
  •  0
  •   Pierre-Gilles Levallois    15 年前

    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;
    

    哦。