Maybe this is more robust?

https://github.com/philschatz/pdf-ci/blob/master/src/epub-assembler.coffee#L26 (see http://www.w3.org/TR/REC-xml/#NT-NameStartChar)

    INVALID_SUBSEQUENT_CHARS = ///[^
        \-
        \.
        \u00B7
        \u0300-\u036F
        \u203F-\u2040
        0-9
        # INVALID_FIRST_CHAR follows below
        A-Z
        a-z
        _
        \u00C0-\u00D6
        \u00D8-\u00F6
        \u00F8-\u02FF
        \u0370-\u037D
        \u037F-\u1FFF
        \u200C-\u200D
        \u2070-\u218F
        \u2C00-\u2FEF
        \u3001-\uD7FF
        \uF900-\uFDCF
        \uFDF0-\uFFFD
      ]///g