PHP正则表达式。检查字符串是否仅包含字母
在PHP中,如何检查字符串是否仅包含字母?我想写一个if语句,如果有(空格,数字,符号)或除a-z
和A-Z
以外的其他任何内容,将返回false。PHP正则表达式。检查字符串是否仅包含字母
我的字符串只能包含字母。
我想我能做到这样,但我做错了:
if(ereg("[a-zA-Z]+", $myString))
return true;
else
return false;
如何找出是否myString
只包含字母?
从来没有听说过ereg
,但我猜测它会匹配子字符串。
在这种情况下,你要包括在你的正则表达式的两端锚,从而迫使整个字符串匹配:
"^[a-zA-Z]+$"
此外,您可以简化您的函数读取
return ereg("^[a-zA-Z]+$", $myString);
因为if
返回true
或false
从已有的布尔是多余的。
或者,你可以匹配这不一个字母的任何字符,并返回结果的补充:在字符集,它反转的开始
return !ereg("[^a-zA-Z]", $myString);
注意^
它。另外请注意,你之后不再需要+
,因为单个“坏”字符会导致匹配。
最后......这个建议是Java,因为你有你的问题的Java标签。但 $myString
使它看起来像你正在处理,也许Perl或PHP?一些澄清可能会有所帮助。
请注意'ereg'从PHP 5.3开始已被弃用。使用['preg_match'](http://php.net/manual/en/function.preg-match.php)代替 – DrColossos 2015-04-01 10:41:49
或者,尝试检查是否包含字母其他任何东西:[^ A-ZA-Z]
是啊,这工作正常。谢谢
if(myString.matches("^[a-zA-Z]+$"))
您的代码看起来像PHP
。如果字符串中有一个字母,它将返回true
。为了确保该字符串有只有字母,你需要使用的开始和结束锚:
在Java
您可以使用matches
方法String
类的:
boolean hasOnlyLetters(String str) {
return str.matches("^[a-zA-Z]+$");
}
在PHP
功能ereg
现在是已弃用。您需要使用preg_match
作为替换。该PHP
当量的上述功能是:
function hasOnlyLetters($str) {
return preg_match('/^[a-z]+$/i',$str);
}
我会有所不同,使用的是什么信Character.isLetter
定义。
if (myString.matches("\\p{javaLetter}*"))
请注意,这不仅仅匹配[A-Za-z]*
。
一个字符被认为是一个字母,当其一般类别类型,由
Character.getType(ch)
提供的,是以下任何一项:UPPERCASE_LETTER,LOWERCASE_LETTER,TITLECASE_LETTER,MODIFIER_LETTER,OTHER_LETTER并非所有的字母都有案例。许多字符都是字母,但既不是大写也不是小写,也不是标题。
\p{javaXXX}
字符类定义在Pattern
API。
做一个“是给定类型的所有字符”的最简单方法是检查是否任何字符不是该类型的。
所以如果\ W表示一个非字符,那么只需检查其中的一个。
一般来说是正确的,但是在Java中,通常会因为隐式锚定'matches()'方法。所以它的.matches(“\\ w +”)'vs'!s.matches(“。* \\ W。*”)' – 2010-04-24 12:23:38
这不是Java。你可能意味着PHP。 – 2010-04-24 08:47:21
为什么是正则表达式? 'ctype_alpha($ myString);' – AbraCadaver 2017-01-25 16:26:58