2010-03-15 10 views
8

Come faccio a convalidare rapidamente se una stringa è solo alfabetico, ad esempioConvalida alfabetica solo stringa in JavaScript

var str = "!"; 
alert(isLetter(str)); // false 

var str = "a"; 
alert(isLetter(str)); // true 

Edit: Vorrei aggiungere parentesi cioè () di un'eccezione, in modo

var str = "("; 

o

var str = ")"; 

deve restituire true.

risposta

33

espressioni regolari per richiedere almeno una lettera, o parentesi, e consentono solo lettere e parentesi:

function isAlphaOrParen(str) { 
    return /^[a-zA-Z()]+$/.test(str); 
} 

modificare la regexp in base alle esigenze:

  • /^[a-zA-Z()]*$/ - restituisce vero anche per un vuoto stringa
  • /^[a-zA-Z()]$/ - restituisce solo true per singoli caratteri.
  • /^[a-zA-Z() ]+$/ - permette anche spazi
+0

'\ s' e dei suoi cugini all'interno del set di caratteri non è ampiamente supportato in altri sapori espressioni regolari, in modo da avere la tendenza a evitarlo, anche se funziona bene in JavaScript. – gnarf

+0

Anche il flag 'i' potrebbe essere appropriato. –

+1

@Justin Johnson - Yup - '/^[a-z()] + $/i.test (str);' funziona anche. – gnarf

2

Se la memoria non serve questo dovrebbe funzionare in javascript:

function containsOnlyLettersOrParenthesis(str) 
(
    return str.match(/^([a-z\(\)]+)$/i); 
) 
+0

non è necessario sfuggire alla'() 'nel set di caratteri. – gnarf

1

si potrebbe usare le espressioni regolari ...

funzioni isLetter (str) { return str.match ("^ [a-zA-Z()] + $"); }

Spiacenti ... il mio male ... questo è sbagliato ... dovrebbe essere

functions isLetter(str) { 
    return "^[a-zA-Z()]+$".test(str); 
} 

Come l'altra risposta dice ... scusa

4

Ecco qua:

function isLetter(s) 
{ 
    return s.match("^[a-zA-Z\(\)]+$");  
} 
Problemi correlati