PHP Regular Expression. Check if String contains ONLY letters
Solution 1
Never heard of ereg
, but I'd guess that it will match on substrings.
In that case, you want to include anchors on either end of your regexp so as to force a match on the whole string:
"^[a-zA-Z]+$"
Also, you could simplify your function to read
return ereg("^[a-zA-Z]+$", $myString);
because the if
to return true
or false
from what's already a boolean is redundant.
Alternatively, you could match on any character that's not a letter, and return the complement of the result:
return !ereg("[^a-zA-Z]", $myString);
Note the ^
at the beginning of the character set, which inverts it. Also note that you no longer need the +
after it, as a single "bad" character will cause a match.
Finally... this advice is for Java because you have a Java tag on your question. But the $
in $myString
makes it look like you're dealing with, maybe Perl or PHP? Some clarification might help.
Solution 2
Yeah this works fine. Thanks
if(myString.matches("^[a-zA-Z]+$"))
Solution 3
Your code looks like PHP
. It would return true
if the string has a letter in it. To make sure the string has only letters you need to use the start and end anchors:
In Java
you can make use of the matches
method of the String
class:
boolean hasOnlyLetters(String str) {
return str.matches("^[a-zA-Z]+$");
}
In PHP
the function ereg
is deprecated now. You need to use the preg_match
as replacement. The PHP
equivalent of the above function is:
function hasOnlyLetters($str) {
return preg_match('/^[a-z]+$/i',$str);
}
Solution 4
I'm going to be different and use Character.isLetter
definition of what is a letter.
if (myString.matches("\\p{javaLetter}*"))
Note that this matches more than just [A-Za-z]*
.
A character is considered to be a letter if its general category type, provided by
Character.getType(ch)
, is any of the following: UPPERCASE_LETTER, LOWERCASE_LETTER, TITLECASE_LETTER, MODIFIER_LETTER, OTHER_LETTERNot all letters have case. Many characters are letters but are neither uppercase nor lowercase nor titlecase.
The \p{javaXXX}
character classes is defined in Pattern
API.
user69514
Updated on July 09, 2022Comments
-
user69514 almost 2 years
In PHP, how do I check if a String contains only letters? I want to write an if statement that will return false if there is (white space, number, symbol) or anything else other than
a-z
andA-Z
.My string must contain ONLY letters.
I thought I could do it this way, but I'm doing it wrong:
if( ereg("[a-zA-Z]+", $myString)) return true; else return false;
How do I find out if
myString
contains only letters?