Expresión Regular para validar NIT en Guatemala

Recientemente he tenido que validar el nit de una persona en Guatemala, por lo que me puse hacer pruebas en https://regexr.com/, la expresión regular para dicho propósito fue quedando de la siguiente manera:

/^(([\d]){5,8})(-)?(([\d]){1}|([\w]){1})$/gi

Explicación: los símbolos / representa el inicio de la expresión regular, la cadena puede iniciar con(^) una cadena de números con una longitud entre 5 y 8 (([\d]){5,8}) luego puede venir o no el símbolo de guion (\-)?, luego debe venir una terminación con un número o una letra (([\d]){1}|([\w){1})

Entre las observaciones o mejoras que puede tener es que acepta unicamente de 3 a 8 dígitos{3,8}, el cual puede ir incrementándose según se incremente la cantidad de contribuyentes, al igual que la letra en el final de la cadena, puede ser una letra especifica o cualquier letra.

Aplicado quedaría de la siguiente manera:

HTML:

<input type="text" id="nit" placeholder="Si no tienes nit, coloca CF" class="form-control" onKeyUp="this.value = this.value.toUpperCase();" required readonly>

Javascript:

<script>
nit = $('#nit').val().trim();
if (nit === "") { 
                   alert(Por favor ingresa tu nit, si nunca has tenido nit coloca: CF);
                    
                }else {

                switch (nit) {
                    case "CF":
                             alert("has ingresado el nit: "+nit)M
                        break;
                    default:
                        const patt = new RegExp(/^(([\d]){5,8})(\-)?(([\d]){1}|([\w]){1})$/gi);
                        if (!patt.test(nit)) {
                           alert("nit invalido");
                        } else {
                            alert("El nit ingresado es: "+nit);
                        }

                        break;
                }
            }
</script>

Implementado y con pruebas resulto muy bien, espero sea de utilidad.

Carrito de compra