diff --git a/iri.cabal b/iri.cabal
--- a/iri.cabal
+++ b/iri.cabal
@@ -1,7 +1,7 @@
 name:
   iri
 version:
-  0.3.3
+  0.3.4
 category:
   URI, URL, IRI, Network
 synopsis:
diff --git a/library/Iri/Parsing/Attoparsec/ByteString.hs b/library/Iri/Parsing/Attoparsec/ByteString.hs
--- a/library/Iri/Parsing/Attoparsec/ByteString.hs
+++ b/library/Iri/Parsing/Attoparsec/ByteString.hs
@@ -2,6 +2,7 @@
 (
   uri,
   httpUri,
+  regName,
 )
 where
 
@@ -167,7 +168,7 @@
   labeled "Host" $
   IpV6Host <$> ipV6 <|>
   IpV4Host <$> M.parserUtf8 <|>
-  NamedHost <$> domainName
+  NamedHost <$> regName
 
 {-# INLINABLE ipV6 #-}
 ipV6 :: Parser IPv6
@@ -195,9 +196,9 @@
         colon
         return (N.fromWord16s a b c d 0 0 0 0))
 
-{-# INLINE domainName #-}
-domainName :: Parser RegName
-domainName =
+{-# INLINE regName #-}
+regName :: Parser RegName
+regName =
   fmap RegName (E.sepBy1 domainLabel (word8 46))
 
 {-|
diff --git a/library/Iri/Parsing/ByteString.hs b/library/Iri/Parsing/ByteString.hs
--- a/library/Iri/Parsing/ByteString.hs
+++ b/library/Iri/Parsing/ByteString.hs
@@ -2,6 +2,7 @@
 (
   uri,
   httpUri,
+  regName,
 )
 where
 
@@ -11,19 +12,28 @@
 import qualified Data.Attoparsec.ByteString as B
 
 
+parser parser =
+  either (Left . fromString) Right .
+  B.parseOnly (parser <* B.endOfInput)
+
 {-|
 Parser of a well-formed URI conforming to the RFC3986 standard into IRI.
 Performs URL- and Punycode-decoding.
 -}
 uri :: ByteString -> Either Text Iri
 uri =
-  either (Left . fromString) Right .
-  B.parseOnly (A.uri <* B.endOfInput)
+  parser A.uri
 
 {-|
 Same as 'uri', but optimized specifially for the case of HTTP URIs.
 -}
 httpUri :: ByteString -> Either Text HttpIri
 httpUri =
-  either (Left . fromString) Right .
-  B.parseOnly (A.httpUri <* B.endOfInput)
+  parser A.httpUri
+
+{-|
+Domain name parser.
+-}
+regName :: ByteString -> Either Text RegName
+regName =
+  parser A.regName
