Les autres réponses de cette page conviennent aux chaînes de caractères dont on sait qu'elles ne contiennent que des lettres A-Z non accentuées. Si vous ne pouvez pas le garantir (par exemple, par la saisie de l'utilisateur), elles peuvent donner des résultats inattendus : faux positifs pour des initiales non capitalisables comme "1940s" ou "", ou faux négatifs pour des initiales capitales accentuées ou non romaines comme "ukasz" ou "".
Cette variante retourne vrai si l'initiale est cualquier lettre majuscule, et uniquement si c'est une lettre majuscule :
function initialIsCapital( word ){
return word[0] !== word[0].toLowerCase();
}
Utilisez .charAt(0)
au lieu de [0]
si vous avez besoin du support d'IE8 . Quel est plus rapide varie selon les navigateurs .
Cela permet d'éviter deux écueils potentiels avec les autres réponses :
-
Regex utilisant [A-Z]
ne parviendra pas à faire correspondre les lettres accentuées et autres lettres capitales similaires non-A-Z comme dans Åland (îles scandinaves) et ukasz (nom polonais commun), y compris les lettres majuscules dans les écritures non latines telles que le cyrillique ou le grec (par ex. ).
-
L'approche utilisant word[0] === word[0].toUpperCase()
retournera vrai sur les mots qui commencent par des lettres, tels que 1940s , 17ème , 123reg (nom de la société), des abréviations comme 2mrw ou certains mots dans certaines langues africaines, tels que !xún o i-si . Il traitera également toute entrée provenant d'un alphabet qui n'a pas de majuscules comme étant des majuscules (par ex. ).
Puisque cette approche de sécurité des entrées arbitraires est aussi simple et aussi lisible que les autres, il est probablement préférable de l'utiliser même si vous ne prévoyez pas de telles exceptions.
Voici un test rapide :
function a(word){
return word[0] !== word[0].toLowerCase();
}
function b(word){
return word[0] === word[0].toUpperCase();
}
function c(word){
return /^[A-Z]/.test( word );
}
function test(word, answer){
console.log( 'Should be '+answer+':', a(word), b(word), c(word), '-------', word );
}
test( 'ukasz', true ); // regex test fails, returns false
test( '', true ); // regex test fails, returns false
test( '1940s', false ); // .toUpperCase() test fails, returns true
test( '', false ); // .toUpperCase() test fails, returns true
test( 'ß', false ); // All pass on German "sharp S" that has no uppercase
test( 'Zalgo', true ); // All pass. Phew, Zalgo not awakened
0 votes
Vérifiez ici stackoverflow.com/questions/1027224/
1 votes
EDIT : Oui. Essayez
/^[A-Z]/.test(phrase)
( aquí )1 votes
@DavidRodrigues piège potentiel là,
[A-Z]
ne correspond pas aux lettres majuscules accentuées ou non ASCII, voir nouvelle réponse stackoverflow.com/a/39292247/568458