W3C home > Mailing lists > Public > public-powderwg@w3.org > December 2007

IPv6 regex

From: Jeremy Carroll <jjc@hpl.hp.com>
Date: Fri, 14 Dec 2007 15:06:08 +0000
Message-ID: <47629BE0.6080203@hpl.hp.com>
To: public-powderwg@w3.org

I read in:

http://www.w3.org/TR/2007/WD-powder-xsd-20070925/

[[
The group would welcome feedback on this, particularly on developing a 
regular expression for an IPv6 address.
]]

I don't really believe you, but here goes.

Lines 97 - 165 of the attached file seem to include such a thing ....

it's a bit more complicated than need be, because it includes errors and 
warnings for things like IPv4 subaddresses that are out of range.

It is part of the open source Jena IRI library (the file is generated, I 
think by the code in PatternCompiler.java included in the download).

I suspect my feedback is that while technically possible, it is too 
painful to be realistically included in a standard.


Jeremy





package com.hp.hpl.jena.iri.impl;
%%


%unicode
%integer
%char
%implements com.hp.hpl.jena.iri.ViolationCodes
%implements com.hp.hpl.jena.iri.IRIComponents
%implements Lexer
%buffer 2048
%apiprivate


%{
    private Parser parser;
    private int range;
    
    
    public void analyse(Parser p,int r) {
        if (!p.has(r)) 
            return;
        analyse(p,r,p.uri,p.start(r),p.end(r));
    }
    public void analyse(Parser p,int r, String str) {
        analyse(p,r,str,0,str.length());
    }
    synchronized private void analyse(Parser p,int r, String str, int start, int finish) {
        parser = p;
        range = r;
        yyreset(null);
        useXhost = false;
        this.zzAtEOF = true;
        int length = finish - start;
        zzEndRead = length;
        while (length > zzBuffer.length)
            zzBuffer = new char[zzBuffer.length*2];
        str.getChars(
                start,
                finish,
                zzBuffer,
                0);
       try {
            yylex();
       }
       catch (java.io.IOException e) {
       }
       xhost(str,start,finish);
    }
    LexerXHost lexXHost = new LexerXHost((java.io.Reader) null);
    boolean useXhost;
    private void xhost(String str, int start, int finish) {
       if (useXhost) {
           lexXHost.analyse(parser,range,str,start,finish);
       }
    }
    private void error(int e) {
        switch(e) {
          case NOT_DNS_NAME:
          case NON_URI_CHARACTER:
            useXhost = true;
            break;
        }
        parser.recordError(range,e);
    }
    
    private void rule(int rule) {
        parser.matchedRule(range,rule);
    }

%}






%class LexerHost
%%
/*
host => (@{ipLiteral})
ipLiteral => (\\[@{ipVFuture}\\])
ipVFuture => (v@{lowerHexDig}+\\.[-a-zA-Z0-9._~!\$&'()*+,;=:]*)
lowerHexDig => ([0-9a-f])
*/
((\[(v([0-9a-f])+\.[-a-zA-Z0-9._~!$&'()*+,;=:]*)\])) {
rule(1); }
/*
host => (@{ipLiteral})
ipLiteral => (\\[@{ipVFuture}\\])
ipVFuture => (v@{lowerHexDig}+\\.[-a-zA-Z0-9._~!\$&'()*+,;=:]*)
lowerHexDig => ([0-9A-Fa-f])
*/
((\[(v([0-9A-Fa-f])+\.[-a-zA-Z0-9._~!$&'()*+,;=:]*)\])) {
rule(2); error(IPv6ADDRESS_SHOULD_BE_LOWERCASE);}
/*
host => (@{ipLiteral})
ipLiteral => (\\[@{ipV6Address}\\])
ipV6Address => (((@{h16}:){6}@{ls32}|::(@{h16}:){5}@{ls32}|@{h16}?::(@{h16}:){4}@{ls32}|((@{h16}:){0,1}@{h16})?::(@{h16}:){3}@{ls32}|((@{h16}:){0,2}@{h16})?::(@{h16}:){2}@{ls32}|((@{h16}:){0,3}@{h16})?::(@{h16}:){1}@{ls32}|((@{h16}:){0,4}@{h16})?::@{ls32}|((@{h16}:){0,5}@{h16})?::@{h16}|((@{h16}:){0,6}@{h16})?::))
h16 => (@{lowerHexDig}{1,4})
lowerHexDig => ([0-9a-f])
ls32 => ((@{h16}:@{h16}|@{ipV4Address}))
ipV4Address => ((@{decOctet}\\.){3}@{decOctet})
decOctet => (([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))
*/
((\[((((([0-9a-f]){1,4}):){6}(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|(((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\.){3}(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])))))|::((([0-9a-f]){1,4}):){5}(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|(((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\.){3}(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])))))|(([0-9a-f]){1,4})?::((([0-9a-f]){1,4}):){4}(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|(((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\.){3}(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])))))|(((([0-9a-f]){1,4}):){0,1}(([0-9a-f]){1,4}))?::((([0-9a-f]){1,4}):){3}(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|(((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\.){3}(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])))))|(((([0-9a-f]){1,4}):){0,2}(([0-9a-f]){1,4}))?::((([0-9a-f]){1,4}):){2}(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|(((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\.){3}(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])))))|(((([0-9a-f]){1,4}):){0,3}(([0-9a-f]){1,4}))?::((([0-9a-f]){1,4}):){1}(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|(((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\.){3}(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])))))|(((([0-9a-f]){1,4}):){0,4}(([0-9a-f]){1,4}))?::(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|(((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\.){3}(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])))))|(((([0-9a-f]){1,4}):){0,5}(([0-9a-f]){1,4}))?::(([0-9a-f]){1,4})|(((([0-9a-f]){1,4}):){0,6}(([0-9a-f]){1,4}))?::))\])) {
rule(3); }
/*
host => (@{ipLiteral})
ipLiteral => (\\[@{ipV6Address}\\])
ipV6Address => (((@{h16}:){6}@{ls32}|::(@{h16}:){5}@{ls32}|@{h16}?::(@{h16}:){4}@{ls32}|((@{h16}:){0,1}@{h16})?::(@{h16}:){3}@{ls32}|((@{h16}:){0,2}@{h16})?::(@{h16}:){2}@{ls32}|((@{h16}:){0,3}@{h16})?::(@{h16}:){1}@{ls32}|((@{h16}:){0,4}@{h16})?::@{ls32}|((@{h16}:){0,5}@{h16})?::@{h16}|((@{h16}:){0,6}@{h16})?::))
h16 => (@{lowerHexDig}{1,4})
lowerHexDig => ([0-9a-f])
ls32 => ((@{h16}:@{h16}|@{ipV4Address}))
ipV4Address => (([0-9]+\\.){3}[0-9]+)
*/
((\[((((([0-9a-f]){1,4}):){6}(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|(([0-9]+\.){3}[0-9]+)))|::((([0-9a-f]){1,4}):){5}(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|(([0-9]+\.){3}[0-9]+)))|(([0-9a-f]){1,4})?::((([0-9a-f]){1,4}):){4}(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|(([0-9]+\.){3}[0-9]+)))|(((([0-9a-f]){1,4}):){0,1}(([0-9a-f]){1,4}))?::((([0-9a-f]){1,4}):){3}(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|(([0-9]+\.){3}[0-9]+)))|(((([0-9a-f]){1,4}):){0,2}(([0-9a-f]){1,4}))?::((([0-9a-f]){1,4}):){2}(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|(([0-9]+\.){3}[0-9]+)))|(((([0-9a-f]){1,4}):){0,3}(([0-9a-f]){1,4}))?::((([0-9a-f]){1,4}):){1}(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|(([0-9]+\.){3}[0-9]+)))|(((([0-9a-f]){1,4}):){0,4}(([0-9a-f]){1,4}))?::(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|(([0-9]+\.){3}[0-9]+)))|(((([0-9a-f]){1,4}):){0,5}(([0-9a-f]){1,4}))?::(([0-9a-f]){1,4})|(((([0-9a-f]){1,4}):){0,6}(([0-9a-f]){1,4}))?::))\])) {
rule(4); error(IP_V4_OCTET_RANGE);}
/*
host => (@{ipLiteral})
ipLiteral => (\\[@{ipV6Address}\\])
ipV6Address => (((@{h16}:){6}@{ls32}|::(@{h16}:){5}@{ls32}|@{h16}?::(@{h16}:){4}@{ls32}|((@{h16}:){0,1}@{h16})?::(@{h16}:){3}@{ls32}|((@{h16}:){0,2}@{h16})?::(@{h16}:){2}@{ls32}|((@{h16}:){0,3}@{h16})?::(@{h16}:){1}@{ls32}|((@{h16}:){0,4}@{h16})?::@{ls32}|((@{h16}:){0,5}@{h16})?::@{h16}|((@{h16}:){0,6}@{h16})?::))
h16 => (@{lowerHexDig}{1,4})
lowerHexDig => ([0-9a-f])
ls32 => ((@{h16}:@{h16}|@{ipV4Address}))
ipV4Address => ([0-9\\.]+\\.[0-9\\.]+)
*/
((\[((((([0-9a-f]){1,4}):){6}(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|([0-9\.]+\.[0-9\.]+)))|::((([0-9a-f]){1,4}):){5}(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|([0-9\.]+\.[0-9\.]+)))|(([0-9a-f]){1,4})?::((([0-9a-f]){1,4}):){4}(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|([0-9\.]+\.[0-9\.]+)))|(((([0-9a-f]){1,4}):){0,1}(([0-9a-f]){1,4}))?::((([0-9a-f]){1,4}):){3}(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|([0-9\.]+\.[0-9\.]+)))|(((([0-9a-f]){1,4}):){0,2}(([0-9a-f]){1,4}))?::((([0-9a-f]){1,4}):){2}(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|([0-9\.]+\.[0-9\.]+)))|(((([0-9a-f]){1,4}):){0,3}(([0-9a-f]){1,4}))?::((([0-9a-f]){1,4}):){1}(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|([0-9\.]+\.[0-9\.]+)))|(((([0-9a-f]){1,4}):){0,4}(([0-9a-f]){1,4}))?::(((([0-9a-f]){1,4}):(([0-9a-f]){1,4})|([0-9\.]+\.[0-9\.]+)))|(((([0-9a-f]){1,4}):){0,5}(([0-9a-f]){1,4}))?::(([0-9a-f]){1,4})|(((([0-9a-f]){1,4}):){0,6}(([0-9a-f]){1,4}))?::))\])) {
rule(5); error(IP_V4_HAS_FOUR_COMPONENTS);}
/*
host => (@{ipLiteral})
ipLiteral => (\\[@{ipV6Address}\\])
ipV6Address => (((@{h16}:){6}@{ls32}|::(@{h16}:){5}@{ls32}|@{h16}?::(@{h16}:){4}@{ls32}|((@{h16}:){0,1}@{h16})?::(@{h16}:){3}@{ls32}|((@{h16}:){0,2}@{h16})?::(@{h16}:){2}@{ls32}|((@{h16}:){0,3}@{h16})?::(@{h16}:){1}@{ls32}|((@{h16}:){0,4}@{h16})?::@{ls32}|((@{h16}:){0,5}@{h16})?::@{h16}|((@{h16}:){0,6}@{h16})?::))
h16 => (@{lowerHexDig}{1,4})
lowerHexDig => ([0-9A-Fa-f])
ls32 => ((@{h16}:@{h16}|@{ipV4Address}))
ipV4Address => ((@{decOctet}\\.){3}@{decOctet})
decOctet => (([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))
*/
((\[((((([0-9A-Fa-f]){1,4}):){6}(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|(((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\.){3}(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])))))|::((([0-9A-Fa-f]){1,4}):){5}(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|(((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\.){3}(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])))))|(([0-9A-Fa-f]){1,4})?::((([0-9A-Fa-f]){1,4}):){4}(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|(((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\.){3}(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])))))|(((([0-9A-Fa-f]){1,4}):){0,1}(([0-9A-Fa-f]){1,4}))?::((([0-9A-Fa-f]){1,4}):){3}(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|(((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\.){3}(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])))))|(((([0-9A-Fa-f]){1,4}):){0,2}(([0-9A-Fa-f]){1,4}))?::((([0-9A-Fa-f]){1,4}):){2}(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|(((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\.){3}(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])))))|(((([0-9A-Fa-f]){1,4}):){0,3}(([0-9A-Fa-f]){1,4}))?::((([0-9A-Fa-f]){1,4}):){1}(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|(((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\.){3}(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])))))|(((([0-9A-Fa-f]){1,4}):){0,4}(([0-9A-Fa-f]){1,4}))?::(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|(((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\.){3}(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])))))|(((([0-9A-Fa-f]){1,4}):){0,5}(([0-9A-Fa-f]){1,4}))?::(([0-9A-Fa-f]){1,4})|(((([0-9A-Fa-f]){1,4}):){0,6}(([0-9A-Fa-f]){1,4}))?::))\])) {
rule(6); error(IPv6ADDRESS_SHOULD_BE_LOWERCASE);}
/*
host => (@{ipLiteral})
ipLiteral => (\\[@{ipV6Address}\\])
ipV6Address => (((@{h16}:){6}@{ls32}|::(@{h16}:){5}@{ls32}|@{h16}?::(@{h16}:){4}@{ls32}|((@{h16}:){0,1}@{h16})?::(@{h16}:){3}@{ls32}|((@{h16}:){0,2}@{h16})?::(@{h16}:){2}@{ls32}|((@{h16}:){0,3}@{h16})?::(@{h16}:){1}@{ls32}|((@{h16}:){0,4}@{h16})?::@{ls32}|((@{h16}:){0,5}@{h16})?::@{h16}|((@{h16}:){0,6}@{h16})?::))
h16 => (@{lowerHexDig}{1,4})
lowerHexDig => ([0-9A-Fa-f])
ls32 => ((@{h16}:@{h16}|@{ipV4Address}))
ipV4Address => (([0-9]+\\.){3}[0-9]+)
*/
((\[((((([0-9A-Fa-f]){1,4}):){6}(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|(([0-9]+\.){3}[0-9]+)))|::((([0-9A-Fa-f]){1,4}):){5}(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|(([0-9]+\.){3}[0-9]+)))|(([0-9A-Fa-f]){1,4})?::((([0-9A-Fa-f]){1,4}):){4}(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|(([0-9]+\.){3}[0-9]+)))|(((([0-9A-Fa-f]){1,4}):){0,1}(([0-9A-Fa-f]){1,4}))?::((([0-9A-Fa-f]){1,4}):){3}(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|(([0-9]+\.){3}[0-9]+)))|(((([0-9A-Fa-f]){1,4}):){0,2}(([0-9A-Fa-f]){1,4}))?::((([0-9A-Fa-f]){1,4}):){2}(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|(([0-9]+\.){3}[0-9]+)))|(((([0-9A-Fa-f]){1,4}):){0,3}(([0-9A-Fa-f]){1,4}))?::((([0-9A-Fa-f]){1,4}):){1}(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|(([0-9]+\.){3}[0-9]+)))|(((([0-9A-Fa-f]){1,4}):){0,4}(([0-9A-Fa-f]){1,4}))?::(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|(([0-9]+\.){3}[0-9]+)))|(((([0-9A-Fa-f]){1,4}):){0,5}(([0-9A-Fa-f]){1,4}))?::(([0-9A-Fa-f]){1,4})|(((([0-9A-Fa-f]){1,4}):){0,6}(([0-9A-Fa-f]){1,4}))?::))\])) {
rule(7); error(IPv6ADDRESS_SHOULD_BE_LOWERCASE);error(IP_V4_OCTET_RANGE);}
/*
host => (@{ipLiteral})
ipLiteral => (\\[@{ipV6Address}\\])
ipV6Address => (((@{h16}:){6}@{ls32}|::(@{h16}:){5}@{ls32}|@{h16}?::(@{h16}:){4}@{ls32}|((@{h16}:){0,1}@{h16})?::(@{h16}:){3}@{ls32}|((@{h16}:){0,2}@{h16})?::(@{h16}:){2}@{ls32}|((@{h16}:){0,3}@{h16})?::(@{h16}:){1}@{ls32}|((@{h16}:){0,4}@{h16})?::@{ls32}|((@{h16}:){0,5}@{h16})?::@{h16}|((@{h16}:){0,6}@{h16})?::))
h16 => (@{lowerHexDig}{1,4})
lowerHexDig => ([0-9A-Fa-f])
ls32 => ((@{h16}:@{h16}|@{ipV4Address}))
ipV4Address => ([0-9\\.]+\\.[0-9\\.]+)
*/
((\[((((([0-9A-Fa-f]){1,4}):){6}(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|([0-9\.]+\.[0-9\.]+)))|::((([0-9A-Fa-f]){1,4}):){5}(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|([0-9\.]+\.[0-9\.]+)))|(([0-9A-Fa-f]){1,4})?::((([0-9A-Fa-f]){1,4}):){4}(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|([0-9\.]+\.[0-9\.]+)))|(((([0-9A-Fa-f]){1,4}):){0,1}(([0-9A-Fa-f]){1,4}))?::((([0-9A-Fa-f]){1,4}):){3}(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|([0-9\.]+\.[0-9\.]+)))|(((([0-9A-Fa-f]){1,4}):){0,2}(([0-9A-Fa-f]){1,4}))?::((([0-9A-Fa-f]){1,4}):){2}(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|([0-9\.]+\.[0-9\.]+)))|(((([0-9A-Fa-f]){1,4}):){0,3}(([0-9A-Fa-f]){1,4}))?::((([0-9A-Fa-f]){1,4}):){1}(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|([0-9\.]+\.[0-9\.]+)))|(((([0-9A-Fa-f]){1,4}):){0,4}(([0-9A-Fa-f]){1,4}))?::(((([0-9A-Fa-f]){1,4}):(([0-9A-Fa-f]){1,4})|([0-9\.]+\.[0-9\.]+)))|(((([0-9A-Fa-f]){1,4}):){0,5}(([0-9A-Fa-f]){1,4}))?::(([0-9A-Fa-f]){1,4})|(((([0-9A-Fa-f]){1,4}):){0,6}(([0-9A-Fa-f]){1,4}))?::))\])) {
rule(8); error(IPv6ADDRESS_SHOULD_BE_LOWERCASE);error(IP_V4_HAS_FOUR_COMPONENTS);}
/*
host => (@{ipLiteral})
ipLiteral => (\\[[^]*)
*/
((\[[^]*)) {
rule(9); error(IP_V6_OR_FUTURE_ADDRESS_SYNTAX);}
/*
host => (@{ipV4Address})
ipV4Address => ((@{decOctet}\\.){3}@{decOctet})
decOctet => (([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))
*/
((((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\.){3}(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])))) {
rule(10); }
/*
host => (@{ipV4Address})
ipV4Address => (([0-9]+\\.){3}[0-9]+)
*/
((([0-9]+\.){3}[0-9]+)) {
rule(11); error(IP_V4_OCTET_RANGE);}
/*
host => (@{ipV4Address})
ipV4Address => ([0-9\\.]+\\.[0-9\\.]+)
*/
(([0-9\.]+\.[0-9\.]+)) {
rule(12); error(IP_V4_HAS_FOUR_COMPONENTS);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-z0-9])
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (@{labelChar})
*/
(((((((([a-z0-9])|_)))((((((([a-z0-9])|_))+-)*((([a-z0-9])|_))+)?)(((([a-z0-9])|_))))?)\.)*((((([a-z0-9])|_)))((((((([a-z0-9])|_))+-)*((([a-z0-9])|_))+)?)(((([a-z0-9])|_))))?)\.?)) {
rule(13); }
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-z0-9])
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (-|@{labelChar})
*/
(((((((([a-z0-9])|_)))((((((([a-z0-9])|_))+-)*((([a-z0-9])|_))+)?)(-|((([a-z0-9])|_))))?)\.)*((((([a-z0-9])|_)))((((((([a-z0-9])|_))+-)*((([a-z0-9])|_))+)?)(-|((([a-z0-9])|_))))?)\.?)) {
rule(14); error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-zA-Z0-9])
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (@{labelChar})
*/
(((((((([a-zA-Z0-9])|_)))((((((([a-zA-Z0-9])|_))+-)*((([a-zA-Z0-9])|_))+)?)(((([a-zA-Z0-9])|_))))?)\.)*((((([a-zA-Z0-9])|_)))((((((([a-zA-Z0-9])|_))+-)*((([a-zA-Z0-9])|_))+)?)(((([a-zA-Z0-9])|_))))?)\.?)) {
rule(15); error(LOWERCASE_PREFERRED);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-zA-Z0-9])
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (-|@{labelChar})
*/
(((((((([a-zA-Z0-9])|_)))((((((([a-zA-Z0-9])|_))+-)*((([a-zA-Z0-9])|_))+)?)(-|((([a-zA-Z0-9])|_))))?)\.)*((((([a-zA-Z0-9])|_)))((((((([a-zA-Z0-9])|_))+-)*((([a-zA-Z0-9])|_))+)?)(-|((([a-zA-Z0-9])|_))))?)\.?)) {
rule(16); error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-z0-9])
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (@{labelChar})
*/
(((((((([a-z0-9])|[_\x80-\uFFFF])))((((((([a-z0-9])|[_\x80-\uFFFF]))+-)*((([a-z0-9])|[_\x80-\uFFFF]))+)?)(((([a-z0-9])|[_\x80-\uFFFF]))))?)\.)*((((([a-z0-9])|[_\x80-\uFFFF])))((((((([a-z0-9])|[_\x80-\uFFFF]))+-)*((([a-z0-9])|[_\x80-\uFFFF]))+)?)(((([a-z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(17); error(NON_URI_CHARACTER);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-z0-9])
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (-|@{labelChar})
*/
(((((((([a-z0-9])|[_\x80-\uFFFF])))((((((([a-z0-9])|[_\x80-\uFFFF]))+-)*((([a-z0-9])|[_\x80-\uFFFF]))+)?)(-|((([a-z0-9])|[_\x80-\uFFFF]))))?)\.)*((((([a-z0-9])|[_\x80-\uFFFF])))((((((([a-z0-9])|[_\x80-\uFFFF]))+-)*((([a-z0-9])|[_\x80-\uFFFF]))+)?)(-|((([a-z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(18); error(NON_URI_CHARACTER);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-zA-Z0-9])
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (@{labelChar})
*/
(((((((([a-zA-Z0-9])|[_\x80-\uFFFF])))((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))+-)*((([a-zA-Z0-9])|[_\x80-\uFFFF]))+)?)(((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.)*((((([a-zA-Z0-9])|[_\x80-\uFFFF])))((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))+-)*((([a-zA-Z0-9])|[_\x80-\uFFFF]))+)?)(((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(19); error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-zA-Z0-9])
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (-|@{labelChar})
*/
(((((((([a-zA-Z0-9])|[_\x80-\uFFFF])))((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))+-)*((([a-zA-Z0-9])|[_\x80-\uFFFF]))+)?)(-|((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.)*((((([a-zA-Z0-9])|[_\x80-\uFFFF])))((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))+-)*((([a-zA-Z0-9])|[_\x80-\uFFFF]))+)?)(-|((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(20); error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (-|@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-z0-9])
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (@{labelChar})
*/
(((((-|((([a-z0-9])|_)))((((((([a-z0-9])|_))+-)*((([a-z0-9])|_))+)?)(((([a-z0-9])|_))))?)\.)*((-|((([a-z0-9])|_)))((((((([a-z0-9])|_))+-)*((([a-z0-9])|_))+)?)(((([a-z0-9])|_))))?)\.?)) {
rule(21); error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (-|@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-z0-9])
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (-|@{labelChar})
*/
(((((-|((([a-z0-9])|_)))((((((([a-z0-9])|_))+-)*((([a-z0-9])|_))+)?)(-|((([a-z0-9])|_))))?)\.)*((-|((([a-z0-9])|_)))((((((([a-z0-9])|_))+-)*((([a-z0-9])|_))+)?)(-|((([a-z0-9])|_))))?)\.?)) {
rule(22); error(DNS_LABEL_DASH_START_OR_END);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (-|@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-zA-Z0-9])
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (@{labelChar})
*/
(((((-|((([a-zA-Z0-9])|_)))((((((([a-zA-Z0-9])|_))+-)*((([a-zA-Z0-9])|_))+)?)(((([a-zA-Z0-9])|_))))?)\.)*((-|((([a-zA-Z0-9])|_)))((((((([a-zA-Z0-9])|_))+-)*((([a-zA-Z0-9])|_))+)?)(((([a-zA-Z0-9])|_))))?)\.?)) {
rule(23); error(DNS_LABEL_DASH_START_OR_END);error(LOWERCASE_PREFERRED);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (-|@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-zA-Z0-9])
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (-|@{labelChar})
*/
(((((-|((([a-zA-Z0-9])|_)))((((((([a-zA-Z0-9])|_))+-)*((([a-zA-Z0-9])|_))+)?)(-|((([a-zA-Z0-9])|_))))?)\.)*((-|((([a-zA-Z0-9])|_)))((((((([a-zA-Z0-9])|_))+-)*((([a-zA-Z0-9])|_))+)?)(-|((([a-zA-Z0-9])|_))))?)\.?)) {
rule(24); error(DNS_LABEL_DASH_START_OR_END);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (-|@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-z0-9])
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (@{labelChar})
*/
(((((-|((([a-z0-9])|[_\x80-\uFFFF])))((((((([a-z0-9])|[_\x80-\uFFFF]))+-)*((([a-z0-9])|[_\x80-\uFFFF]))+)?)(((([a-z0-9])|[_\x80-\uFFFF]))))?)\.)*((-|((([a-z0-9])|[_\x80-\uFFFF])))((((((([a-z0-9])|[_\x80-\uFFFF]))+-)*((([a-z0-9])|[_\x80-\uFFFF]))+)?)(((([a-z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(25); error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (-|@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-z0-9])
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (-|@{labelChar})
*/
(((((-|((([a-z0-9])|[_\x80-\uFFFF])))((((((([a-z0-9])|[_\x80-\uFFFF]))+-)*((([a-z0-9])|[_\x80-\uFFFF]))+)?)(-|((([a-z0-9])|[_\x80-\uFFFF]))))?)\.)*((-|((([a-z0-9])|[_\x80-\uFFFF])))((((((([a-z0-9])|[_\x80-\uFFFF]))+-)*((([a-z0-9])|[_\x80-\uFFFF]))+)?)(-|((([a-z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(26); error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (-|@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-zA-Z0-9])
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (@{labelChar})
*/
(((((-|((([a-zA-Z0-9])|[_\x80-\uFFFF])))((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))+-)*((([a-zA-Z0-9])|[_\x80-\uFFFF]))+)?)(((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.)*((-|((([a-zA-Z0-9])|[_\x80-\uFFFF])))((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))+-)*((([a-zA-Z0-9])|[_\x80-\uFFFF]))+)?)(((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(27); error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (-|@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-zA-Z0-9])
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (-|@{labelChar})
*/
(((((-|((([a-zA-Z0-9])|[_\x80-\uFFFF])))((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))+-)*((([a-zA-Z0-9])|[_\x80-\uFFFF]))+)?)(-|((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.)*((-|((([a-zA-Z0-9])|[_\x80-\uFFFF])))((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))+-)*((([a-zA-Z0-9])|[_\x80-\uFFFF]))+)?)(-|((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(28); error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar}|@{acePrefix})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-z0-9])
acePrefix => (@{letterDigit}{2}--)
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (@{labelChar})
*/
(((((((([a-z0-9])|_))|(([a-z0-9]){2}--))((((((([a-z0-9])|_))+-)*((([a-z0-9])|_))+)?)(((([a-z0-9])|_))))?)\.)*((((([a-z0-9])|_))|(([a-z0-9]){2}--))((((((([a-z0-9])|_))+-)*((([a-z0-9])|_))+)?)(((([a-z0-9])|_))))?)\.?)) {
rule(29); error(ACE_PREFIX);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar}|@{acePrefix})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-z0-9])
acePrefix => (@{letterDigit}{2}--)
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (-|@{labelChar})
*/
(((((((([a-z0-9])|_))|(([a-z0-9]){2}--))((((((([a-z0-9])|_))+-)*((([a-z0-9])|_))+)?)(-|((([a-z0-9])|_))))?)\.)*((((([a-z0-9])|_))|(([a-z0-9]){2}--))((((((([a-z0-9])|_))+-)*((([a-z0-9])|_))+)?)(-|((([a-z0-9])|_))))?)\.?)) {
rule(30); error(ACE_PREFIX);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar}|@{acePrefix})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-zA-Z0-9])
acePrefix => (@{letterDigit}{2}--)
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (@{labelChar})
*/
(((((((([a-zA-Z0-9])|_))|(([a-zA-Z0-9]){2}--))((((((([a-zA-Z0-9])|_))+-)*((([a-zA-Z0-9])|_))+)?)(((([a-zA-Z0-9])|_))))?)\.)*((((([a-zA-Z0-9])|_))|(([a-zA-Z0-9]){2}--))((((((([a-zA-Z0-9])|_))+-)*((([a-zA-Z0-9])|_))+)?)(((([a-zA-Z0-9])|_))))?)\.?)) {
rule(31); error(ACE_PREFIX);error(LOWERCASE_PREFERRED);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar}|@{acePrefix})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-zA-Z0-9])
acePrefix => (@{letterDigit}{2}--)
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (-|@{labelChar})
*/
(((((((([a-zA-Z0-9])|_))|(([a-zA-Z0-9]){2}--))((((((([a-zA-Z0-9])|_))+-)*((([a-zA-Z0-9])|_))+)?)(-|((([a-zA-Z0-9])|_))))?)\.)*((((([a-zA-Z0-9])|_))|(([a-zA-Z0-9]){2}--))((((((([a-zA-Z0-9])|_))+-)*((([a-zA-Z0-9])|_))+)?)(-|((([a-zA-Z0-9])|_))))?)\.?)) {
rule(32); error(ACE_PREFIX);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar}|@{acePrefix})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-z0-9])
acePrefix => (@{letterDigit}{2}--)
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (@{labelChar})
*/
(((((((([a-z0-9])|[_\x80-\uFFFF]))|(([a-z0-9]){2}--))((((((([a-z0-9])|[_\x80-\uFFFF]))+-)*((([a-z0-9])|[_\x80-\uFFFF]))+)?)(((([a-z0-9])|[_\x80-\uFFFF]))))?)\.)*((((([a-z0-9])|[_\x80-\uFFFF]))|(([a-z0-9]){2}--))((((((([a-z0-9])|[_\x80-\uFFFF]))+-)*((([a-z0-9])|[_\x80-\uFFFF]))+)?)(((([a-z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(33); error(ACE_PREFIX);error(NON_URI_CHARACTER);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar}|@{acePrefix})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-z0-9])
acePrefix => (@{letterDigit}{2}--)
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (-|@{labelChar})
*/
(((((((([a-z0-9])|[_\x80-\uFFFF]))|(([a-z0-9]){2}--))((((((([a-z0-9])|[_\x80-\uFFFF]))+-)*((([a-z0-9])|[_\x80-\uFFFF]))+)?)(-|((([a-z0-9])|[_\x80-\uFFFF]))))?)\.)*((((([a-z0-9])|[_\x80-\uFFFF]))|(([a-z0-9]){2}--))((((((([a-z0-9])|[_\x80-\uFFFF]))+-)*((([a-z0-9])|[_\x80-\uFFFF]))+)?)(-|((([a-z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(34); error(ACE_PREFIX);error(NON_URI_CHARACTER);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar}|@{acePrefix})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-zA-Z0-9])
acePrefix => (@{letterDigit}{2}--)
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (@{labelChar})
*/
(((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))|(([a-zA-Z0-9]){2}--))((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))+-)*((([a-zA-Z0-9])|[_\x80-\uFFFF]))+)?)(((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.)*((((([a-zA-Z0-9])|[_\x80-\uFFFF]))|(([a-zA-Z0-9]){2}--))((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))+-)*((([a-zA-Z0-9])|[_\x80-\uFFFF]))+)?)(((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(35); error(ACE_PREFIX);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar}|@{acePrefix})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-zA-Z0-9])
acePrefix => (@{letterDigit}{2}--)
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (-|@{labelChar})
*/
(((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))|(([a-zA-Z0-9]){2}--))((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))+-)*((([a-zA-Z0-9])|[_\x80-\uFFFF]))+)?)(-|((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.)*((((([a-zA-Z0-9])|[_\x80-\uFFFF]))|(([a-zA-Z0-9]){2}--))((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))+-)*((([a-zA-Z0-9])|[_\x80-\uFFFF]))+)?)(-|((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(36); error(ACE_PREFIX);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar}|@{acePrefix}|-)
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-z0-9])
acePrefix => (@{letterDigit}{2}--)
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (@{labelChar})
*/
(((((((([a-z0-9])|_))|(([a-z0-9]){2}--)|-)((((((([a-z0-9])|_))+-)*((([a-z0-9])|_))+)?)(((([a-z0-9])|_))))?)\.)*((((([a-z0-9])|_))|(([a-z0-9]){2}--)|-)((((((([a-z0-9])|_))+-)*((([a-z0-9])|_))+)?)(((([a-z0-9])|_))))?)\.?)) {
rule(37); error(ACE_PREFIX);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar}|@{acePrefix}|-)
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-z0-9])
acePrefix => (@{letterDigit}{2}--)
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (-|@{labelChar})
*/
(((((((([a-z0-9])|_))|(([a-z0-9]){2}--)|-)((((((([a-z0-9])|_))+-)*((([a-z0-9])|_))+)?)(-|((([a-z0-9])|_))))?)\.)*((((([a-z0-9])|_))|(([a-z0-9]){2}--)|-)((((((([a-z0-9])|_))+-)*((([a-z0-9])|_))+)?)(-|((([a-z0-9])|_))))?)\.?)) {
rule(38); error(ACE_PREFIX);error(DNS_LABEL_DASH_START_OR_END);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar}|@{acePrefix}|-)
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-zA-Z0-9])
acePrefix => (@{letterDigit}{2}--)
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (@{labelChar})
*/
(((((((([a-zA-Z0-9])|_))|(([a-zA-Z0-9]){2}--)|-)((((((([a-zA-Z0-9])|_))+-)*((([a-zA-Z0-9])|_))+)?)(((([a-zA-Z0-9])|_))))?)\.)*((((([a-zA-Z0-9])|_))|(([a-zA-Z0-9]){2}--)|-)((((((([a-zA-Z0-9])|_))+-)*((([a-zA-Z0-9])|_))+)?)(((([a-zA-Z0-9])|_))))?)\.?)) {
rule(39); error(ACE_PREFIX);error(DNS_LABEL_DASH_START_OR_END);error(LOWERCASE_PREFERRED);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar}|@{acePrefix}|-)
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-zA-Z0-9])
acePrefix => (@{letterDigit}{2}--)
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (-|@{labelChar})
*/
(((((((([a-zA-Z0-9])|_))|(([a-zA-Z0-9]){2}--)|-)((((((([a-zA-Z0-9])|_))+-)*((([a-zA-Z0-9])|_))+)?)(-|((([a-zA-Z0-9])|_))))?)\.)*((((([a-zA-Z0-9])|_))|(([a-zA-Z0-9]){2}--)|-)((((((([a-zA-Z0-9])|_))+-)*((([a-zA-Z0-9])|_))+)?)(-|((([a-zA-Z0-9])|_))))?)\.?)) {
rule(40); error(ACE_PREFIX);error(DNS_LABEL_DASH_START_OR_END);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar}|@{acePrefix}|-)
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-z0-9])
acePrefix => (@{letterDigit}{2}--)
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (@{labelChar})
*/
(((((((([a-z0-9])|[_\x80-\uFFFF]))|(([a-z0-9]){2}--)|-)((((((([a-z0-9])|[_\x80-\uFFFF]))+-)*((([a-z0-9])|[_\x80-\uFFFF]))+)?)(((([a-z0-9])|[_\x80-\uFFFF]))))?)\.)*((((([a-z0-9])|[_\x80-\uFFFF]))|(([a-z0-9]){2}--)|-)((((((([a-z0-9])|[_\x80-\uFFFF]))+-)*((([a-z0-9])|[_\x80-\uFFFF]))+)?)(((([a-z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(41); error(ACE_PREFIX);error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar}|@{acePrefix}|-)
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-z0-9])
acePrefix => (@{letterDigit}{2}--)
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (-|@{labelChar})
*/
(((((((([a-z0-9])|[_\x80-\uFFFF]))|(([a-z0-9]){2}--)|-)((((((([a-z0-9])|[_\x80-\uFFFF]))+-)*((([a-z0-9])|[_\x80-\uFFFF]))+)?)(-|((([a-z0-9])|[_\x80-\uFFFF]))))?)\.)*((((([a-z0-9])|[_\x80-\uFFFF]))|(([a-z0-9]){2}--)|-)((((((([a-z0-9])|[_\x80-\uFFFF]))+-)*((([a-z0-9])|[_\x80-\uFFFF]))+)?)(-|((([a-z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(42); error(ACE_PREFIX);error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar}|@{acePrefix}|-)
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-zA-Z0-9])
acePrefix => (@{letterDigit}{2}--)
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (@{labelChar})
*/
(((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))|(([a-zA-Z0-9]){2}--)|-)((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))+-)*((([a-zA-Z0-9])|[_\x80-\uFFFF]))+)?)(((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.)*((((([a-zA-Z0-9])|[_\x80-\uFFFF]))|(([a-zA-Z0-9]){2}--)|-)((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))+-)*((([a-zA-Z0-9])|[_\x80-\uFFFF]))+)?)(((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(43); error(ACE_PREFIX);error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar}|@{acePrefix}|-)
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-zA-Z0-9])
acePrefix => (@{letterDigit}{2}--)
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (-|@{labelChar})
*/
(((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))|(([a-zA-Z0-9]){2}--)|-)((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))+-)*((([a-zA-Z0-9])|[_\x80-\uFFFF]))+)?)(-|((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.)*((((([a-zA-Z0-9])|[_\x80-\uFFFF]))|(([a-zA-Z0-9]){2}--)|-)((((((([a-zA-Z0-9])|[_\x80-\uFFFF]))+-)*((([a-zA-Z0-9])|[_\x80-\uFFFF]))+)?)(-|((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(44); error(ACE_PREFIX);error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => ((@{labelChar}|-)*)
labelPrefix => (@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-z0-9])
labelPostfix => (@{labelChar})
*/
(((((((([a-z0-9])|_)))(((((([a-z0-9])|_))|-)*)(((([a-z0-9])|_))))?)\.)*((((([a-z0-9])|_)))(((((([a-z0-9])|_))|-)*)(((([a-z0-9])|_))))?)\.?)) {
rule(45); error(DOUBLE_DASH_IN_REG_NAME);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => ((@{labelChar}|-)*)
labelPrefix => (@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-z0-9])
labelPostfix => (-|@{labelChar})
*/
(((((((([a-z0-9])|_)))(((((([a-z0-9])|_))|-)*)(-|((([a-z0-9])|_))))?)\.)*((((([a-z0-9])|_)))(((((([a-z0-9])|_))|-)*)(-|((([a-z0-9])|_))))?)\.?)) {
rule(46); error(DOUBLE_DASH_IN_REG_NAME);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => ((@{labelChar}|-)*)
labelPrefix => (@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-zA-Z0-9])
labelPostfix => (@{labelChar})
*/
(((((((([a-zA-Z0-9])|_)))(((((([a-zA-Z0-9])|_))|-)*)(((([a-zA-Z0-9])|_))))?)\.)*((((([a-zA-Z0-9])|_)))(((((([a-zA-Z0-9])|_))|-)*)(((([a-zA-Z0-9])|_))))?)\.?)) {
rule(47); error(DOUBLE_DASH_IN_REG_NAME);error(LOWERCASE_PREFERRED);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => ((@{labelChar}|-)*)
labelPrefix => (@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-zA-Z0-9])
labelPostfix => (-|@{labelChar})
*/
(((((((([a-zA-Z0-9])|_)))(((((([a-zA-Z0-9])|_))|-)*)(-|((([a-zA-Z0-9])|_))))?)\.)*((((([a-zA-Z0-9])|_)))(((((([a-zA-Z0-9])|_))|-)*)(-|((([a-zA-Z0-9])|_))))?)\.?)) {
rule(48); error(DOUBLE_DASH_IN_REG_NAME);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => ((@{labelChar}|-)*)
labelPrefix => (@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-z0-9])
labelPostfix => (@{labelChar})
*/
(((((((([a-z0-9])|[_\x80-\uFFFF])))(((((([a-z0-9])|[_\x80-\uFFFF]))|-)*)(((([a-z0-9])|[_\x80-\uFFFF]))))?)\.)*((((([a-z0-9])|[_\x80-\uFFFF])))(((((([a-z0-9])|[_\x80-\uFFFF]))|-)*)(((([a-z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(49); error(DOUBLE_DASH_IN_REG_NAME);error(NON_URI_CHARACTER);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => ((@{labelChar}|-)*)
labelPrefix => (@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-z0-9])
labelPostfix => (-|@{labelChar})
*/
(((((((([a-z0-9])|[_\x80-\uFFFF])))(((((([a-z0-9])|[_\x80-\uFFFF]))|-)*)(-|((([a-z0-9])|[_\x80-\uFFFF]))))?)\.)*((((([a-z0-9])|[_\x80-\uFFFF])))(((((([a-z0-9])|[_\x80-\uFFFF]))|-)*)(-|((([a-z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(50); error(DOUBLE_DASH_IN_REG_NAME);error(NON_URI_CHARACTER);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => ((@{labelChar}|-)*)
labelPrefix => (@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-zA-Z0-9])
labelPostfix => (@{labelChar})
*/
(((((((([a-zA-Z0-9])|[_\x80-\uFFFF])))(((((([a-zA-Z0-9])|[_\x80-\uFFFF]))|-)*)(((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.)*((((([a-zA-Z0-9])|[_\x80-\uFFFF])))(((((([a-zA-Z0-9])|[_\x80-\uFFFF]))|-)*)(((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(51); error(DOUBLE_DASH_IN_REG_NAME);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => ((@{labelChar}|-)*)
labelPrefix => (@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-zA-Z0-9])
labelPostfix => (-|@{labelChar})
*/
(((((((([a-zA-Z0-9])|[_\x80-\uFFFF])))(((((([a-zA-Z0-9])|[_\x80-\uFFFF]))|-)*)(-|((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.)*((((([a-zA-Z0-9])|[_\x80-\uFFFF])))(((((([a-zA-Z0-9])|[_\x80-\uFFFF]))|-)*)(-|((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(52); error(DOUBLE_DASH_IN_REG_NAME);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => ((@{labelChar}|-)*)
labelPrefix => (-|@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-z0-9])
labelPostfix => (@{labelChar})
*/
(((((-|((([a-z0-9])|_)))(((((([a-z0-9])|_))|-)*)(((([a-z0-9])|_))))?)\.)*((-|((([a-z0-9])|_)))(((((([a-z0-9])|_))|-)*)(((([a-z0-9])|_))))?)\.?)) {
rule(53); error(DOUBLE_DASH_IN_REG_NAME);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => ((@{labelChar}|-)*)
labelPrefix => (-|@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-z0-9])
labelPostfix => (-|@{labelChar})
*/
(((((-|((([a-z0-9])|_)))(((((([a-z0-9])|_))|-)*)(-|((([a-z0-9])|_))))?)\.)*((-|((([a-z0-9])|_)))(((((([a-z0-9])|_))|-)*)(-|((([a-z0-9])|_))))?)\.?)) {
rule(54); error(DOUBLE_DASH_IN_REG_NAME);error(DNS_LABEL_DASH_START_OR_END);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => ((@{labelChar}|-)*)
labelPrefix => (-|@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-zA-Z0-9])
labelPostfix => (@{labelChar})
*/
(((((-|((([a-zA-Z0-9])|_)))(((((([a-zA-Z0-9])|_))|-)*)(((([a-zA-Z0-9])|_))))?)\.)*((-|((([a-zA-Z0-9])|_)))(((((([a-zA-Z0-9])|_))|-)*)(((([a-zA-Z0-9])|_))))?)\.?)) {
rule(55); error(DOUBLE_DASH_IN_REG_NAME);error(DNS_LABEL_DASH_START_OR_END);error(LOWERCASE_PREFERRED);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => ((@{labelChar}|-)*)
labelPrefix => (-|@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-zA-Z0-9])
labelPostfix => (-|@{labelChar})
*/
(((((-|((([a-zA-Z0-9])|_)))(((((([a-zA-Z0-9])|_))|-)*)(-|((([a-zA-Z0-9])|_))))?)\.)*((-|((([a-zA-Z0-9])|_)))(((((([a-zA-Z0-9])|_))|-)*)(-|((([a-zA-Z0-9])|_))))?)\.?)) {
rule(56); error(DOUBLE_DASH_IN_REG_NAME);error(DNS_LABEL_DASH_START_OR_END);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => ((@{labelChar}|-)*)
labelPrefix => (-|@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-z0-9])
labelPostfix => (@{labelChar})
*/
(((((-|((([a-z0-9])|[_\x80-\uFFFF])))(((((([a-z0-9])|[_\x80-\uFFFF]))|-)*)(((([a-z0-9])|[_\x80-\uFFFF]))))?)\.)*((-|((([a-z0-9])|[_\x80-\uFFFF])))(((((([a-z0-9])|[_\x80-\uFFFF]))|-)*)(((([a-z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(57); error(DOUBLE_DASH_IN_REG_NAME);error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => ((@{labelChar}|-)*)
labelPrefix => (-|@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-z0-9])
labelPostfix => (-|@{labelChar})
*/
(((((-|((([a-z0-9])|[_\x80-\uFFFF])))(((((([a-z0-9])|[_\x80-\uFFFF]))|-)*)(-|((([a-z0-9])|[_\x80-\uFFFF]))))?)\.)*((-|((([a-z0-9])|[_\x80-\uFFFF])))(((((([a-z0-9])|[_\x80-\uFFFF]))|-)*)(-|((([a-z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(58); error(DOUBLE_DASH_IN_REG_NAME);error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => ((@{labelChar}|-)*)
labelPrefix => (-|@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-zA-Z0-9])
labelPostfix => (@{labelChar})
*/
(((((-|((([a-zA-Z0-9])|[_\x80-\uFFFF])))(((((([a-zA-Z0-9])|[_\x80-\uFFFF]))|-)*)(((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.)*((-|((([a-zA-Z0-9])|[_\x80-\uFFFF])))(((((([a-zA-Z0-9])|[_\x80-\uFFFF]))|-)*)(((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(59); error(DOUBLE_DASH_IN_REG_NAME);error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED);}
/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => ((@{labelChar}|-)*)
labelPrefix => (-|@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|[_\\x80-\\uFFFF])
letterDigit => ([a-zA-Z0-9])
labelPostfix => (-|@{labelChar})
*/
(((((-|((([a-zA-Z0-9])|[_\x80-\uFFFF])))(((((([a-zA-Z0-9])|[_\x80-\uFFFF]))|-)*)(-|((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.)*((-|((([a-zA-Z0-9])|[_\x80-\uFFFF])))(((((([a-zA-Z0-9])|[_\x80-\uFFFF]))|-)*)(-|((([a-zA-Z0-9])|[_\x80-\uFFFF]))))?)\.?)) {
rule(60); error(DOUBLE_DASH_IN_REG_NAME);error(DNS_LABEL_DASH_START_OR_END);error(NON_URI_CHARACTER);error(LOWERCASE_PREFERRED);error(DNS_LABEL_DASH_START_OR_END);}
/*
host => (@{regname})
regname => ([^]*)
*/
(([^]*)) {
rule(61); error(NOT_DNS_NAME);}
Received on Friday, 14 December 2007 15:06:43 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:42:12 GMT