Estoy tratando de verificar si la primera letra de una cadena es una letra cirílica.
Esto es lo que tengo hasta ahora, pero el problema es que si la cadena comienza con un dígito, también activa el patrón:
$(document).on('keydown keyup', '#userBox', function() { $('#result').html(''); if (/[a-zA-Z]*[^A-Za-z \d]+[a-zA-Z]*/.test(this.value)) { $('#result').html('Cyrillic'); } else { $('#result').html('Non-Cyrillic'); } if ( $(this).val().length === 0) { $('#result').html(''); } }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input id="userBox" autocomplete="off" type="text" autofocus="true" placeholder="Type your message"> <span id="result"></span>también usar la solución de esta publicación Cómo hacer coincidir los caracteres cirílicos con una expresión regular producirá el mismo resultado
$(document).on('keydown keyup', '#userBox', function() { $('#result').html(''); if (/[\p{IsCyrillic}]/.test(this.value)) { $('#result').html('Cyrillic'); } else { $('#result').html('Non-Cyrillic'); } if ( $(this).val().length === 0) { $('#result').html(''); } }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input id="userBox" autocomplete="off" type="text" autofocus="true" placeholder="Type your message"> <span id="result"></span>Puedes usar
/^\P{L}*\p{Script=Cyrl}/u Vea la demostración de expresiones regulares . Tenga en cuenta el indicador /u que hace posible el uso de clases de propiedad/categoría Unicode dentro de expresiones regulares compatibles con ECMAScript 2018+. Detalles :
^ - comienzo de la cadena\P{L}* - cero o más caracteres que no sean letras\p{Script=Cyrl} - un carácter cirílico $(document).on('keydown keyup', '#userBox', function() { $('#result').html(''); if (/^\P{L}*\p{Script=Cyrl}/u.test(this.value)) { $('#result').html('Cyrillic'); } else { $('#result').html('Non-Cyrillic'); } if ( $(this).val().length === 0) { $('#result').html(''); } }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input id="userBox" autocomplete="off" type="text" autofocus="true" placeholder="Type your message"> <span id="result"></span>bono :
Para asegurarse de que el primer carácter de una cadena sea un carácter cirílico, use
/^\p{Script=Cyrl}/uSi desea admitir espacios en blanco opcionales antes del primer carácter de una cadena que es un carácter cirílico:
/^\s*\p{Script=Cyrl}/u