Vérifiez si la première lettre de mot est une lettre majuscule

Est-il possible dans Javascript de savoir si la première lettre d'un mot est une lettre majuscule?

 var word = "Someword"; console.log( word[0] === word[0].toUpperCase() ); 

ou

 var word = "Someword"; console.log( /[AZ]/.test( word[0]) ); 

ou

 var word = "Someword"; console.log( /^[AZ]/.test( word) ); 

Voir toUpperCase() et test()

Les autres réponses sur cette page sont bonnes pour les chaînes qui ne contiennent que des lettres AZ non accentuées. Si vous ne pouvez pas garantir cela (p. Ex. Entrée de l'utilisateur), ils peuvent donner des résultats inattendus: des faux positifs pour les initiales non accessibles comme "1940" ou "中文" ou des faux négatifs pour les initiales capitales accentuées ou non-romaines comme "Łukasz" ou " Александра ".

Cette variante retourne vraie si l'initiale est une lettre majuscule, et seulement s'il s'agit d'une lettre majuscule:

 function initialIsCapital( word ){ return word[0] !== word[0].toLowerCase(); } 

Utilisez .charAt(0) au lieu de [0] si vous avez besoin d'un support IE8 . Ce qui est plus rapide varie entre les navigateurs .

Cela évite deux pièges potentiels avec les autres réponses:

  • Regexes utilisant [AZ] ne parvient pas à correspondre les lettres accentuées et autres lettres non alphabétiques de type [AZ] telles que celles de Åland (îles scandinaves) et Łukasz (nom polonais commun), y compris les lettres majuscules dans des scripts non latins comme le cyrillique ou le grec (par exemple, Александра ).

  • L'approche utilisant le word[0] === word[0].toUpperCase() , renverra true sur les mots qui commencent par des lettres non-lettres, telles que les années 1940 , 17 , 123reg (nom de la société), abréviations comme 2mrw ou quelques mots Dans certaines langues africaines, telles que xūún ou ǂǐ-sì . Il traitera également toute contribution d'un alphabet qui ne comporte pas de majuscule comme lettres majuscules (p. Ex. 中文 ).

Étant donné que cette approche arbitraire-intrinsèque est aussi simple et moins lisible que les alternatives, il est probablement préférable d'utiliser cela 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 /^[AZ]/.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( 'Z̢̜̘͇̹̭a͎͚͔͕̩̬̭͈͞l̩̱̼̤̣g̲̪̱̼̘̜͟ợ̮̱͎̗̕ͅͅ', true ); // All pass. Phew, Zalgo not awakened 

Oui.

 var str = "Hello"; if(str[0].toUpperCase() == str[0]) { window.alert('First character is upper case.'); } 

Vous pouvez le faire de plusieurs façons:

 var myWord = "Hello"; // with string functions if (myWord.charAt(0) === myWord.charAt(0).toUpperCase()) { /* is upper */ } // or for newer browsers that support array-style access to string characters if (myWord[0] === myWord[0].toUpperCase()) { /* is upper */ } // with regex - may not be appropriate for non-English uppercase if (/^[AZ]/.test(myWord) { /* is upper */ } 

Notez que l'accès au style de tableau à des caractères comme myWord[0] est une fonctionnalité ECMAScript 5 et n'est pas pris en charge dans les anciens navigateurs, donc (pour l'instant) je recommanderais probablement la méthode .charAt () .

Si vous devez faire ce test beaucoup, vous pouvez faire une petite fonction:

 function firstLetterIsUpper(str) { var f = str.charAt(0); // or str[0] if not supporting older browsers return f.toUpperCase() === f; } if (firstLetterIsUpper(myWord)) { /* do something */ } 
 var string1 = "this is a string"; var string2 = "This is a string"; if(string1[0] == string1[0].toUpperCase()) alert('is upper case'); else alert('is not upper case'); if(string2[0] == string2[0].toUpperCase()) alert('is upper case'); else alert('is not upper case'); 
 let word = 'Someword'; console.log(word.match(new RegExp(/^[AZ]/)) !== null);