2010-05-13 7 views
20

Considérons une méthode JavaScript qui doit vérifier si une chaîne donnée est en majuscules. Les chaînes d'entrée sont les noms des personnes.JavaScript - recherche de toutes les lettres minuscules dans une chaîne

L'algorithme actuel consiste à vérifier les lettres minuscules.

var check1 = "Jack Spratt";  
var check2 = "BARBARA FOO-BAR"; 
var check3 = "JASON D'WIDGET"; 

var isUpper1 = HasLowercaseCharacters(check1); 
var isUpper2 = HasLowercaseCharacters(check2); 
var isUpper3 = HasLowercaseCharacters(check3); 

function HasLowercaseCharacters(string input) 
{ 
    //pattern for finding whether any lowercase alpha characters exist 
    var allLowercase; 

    return allLowercase.test(input); 
} 

Est-ce une regex le meilleur moyen d'y aller?

Quel modèle utiliseriez-vous pour déterminer si une chaîne contient des caractères alphabétiques en minuscules?

+0

Juste a-z. Pas à ou à par exemple? –

Répondre

21

aussi:

function hasLowerCase(str) { 
    return (/[a-z]/.test(str)); 
} 
+13

C'est une vue très centrée sur l'anglais de ce qu'est une lettre minuscule. Est-ce que "à" n'est pas une minuscule? Je mentionne ceci si longtemps après que cette réponse a été acceptée parce que cette question a été référencée par [cette question plus récente] (http://stackoverflow.com/questions/3816905). La réponse '! = ToUpperCase' ci-dessous est beaucoup plus inclusive. –

+0

Cela ne fonctionnera pas en minuscules, vous devez également vérifier 'undefined'. ' Fonction hasLowerCase (str) { return str? (/[a-z]/.test(str)): false; } ' – parsh

52
function hasLowerCase(str) { 
    return str.toUpperCase() != str; 
} 

alert(hasLowerCase("HeLLO")); 
alert(hasLowerCase("HELLO")); 

Essayez: http://jsfiddle.net/B2bvY/3/

+0

Cela devrait vraiment être la réponse acceptée. Très intelligent monsieur. – perry

+0

putain! c'est très intelligent en effet. Merci beaucoup. – WilomGfx

+0

Excellente solution. J'adore voir des approches comme celle-ci. – lux

5
function hasLowerCase(str) { 
    return str.toUpperCase() != str; 
} 

ou

function hasLowerCase(str) { 
    for(x=0;x<str.length;x++) 
     if(str.charAt(x) >= 'a' && str.charAt(x) <= 'z') 
      return true; 
    return false; 
} 
+0

Beauté! Merci. –

+0

Le second fonctionne avec n'importe quel langage qui n'a pas de diacritiques ou de caractères spéciaux, c'est pourquoi le premier est préféré. – WilomGfx

0

Mais dans quel contexte vous utilisez votre script? Est-ce que vous affichez simplement une entrée utilisateur, telle qu'une invite()? Vous pourriez juste forcer une sortie désirée. cela ne peut

var inpt = prompt("Enter your name: ", ""); 
var uc = inpt.charAt(0); 
var lc = inpt.slice(1); 
var str1 = uc.toUpperCase(); 
var str2 = lc.toLowerCase(); 
var str = str1 + str2; 
document.write(str); 

En fonction de votre utilisation, être celui de choisir ... si tout ce que vous essayez de faire est entrée utilisateur d'affichage de cette façon simple pourrait fonctionner pour vous.

1

seule autre solution correspond à une regex-z

function nameHere(str) { 
    return str.match(/[a-z]/); 
} 

ou

function nameHere(str) { 
     return /[a-z]/g.test(str); 
    } 
Questions connexes