![](/img/trans.png)
[英]PHP regular expression to check string contains upper and lowercase letters
[英]PHP Regular Expression. Check if String contains ONLY letters
在PHP中,如何检查String是否只包含字母? 我想写一个if语句,如果有(空格,数字,符号)或除az
和AZ
之外的任何其他内容,将返回false。
我的字符串必须只包含字母。
我以为我可以这样做,但我做错了:
if( ereg("[a-zA-Z]+", $myString))
return true;
else
return false;
如何确定myString
是否只包含字母?
是的,这很好。 谢谢
if(myString.matches("^[a-zA-Z]+$"))
从未听说过ereg
,但我猜它会在子串上匹配。
在这种情况下,您希望在正则表达式的任一端包含锚点,以便强制匹配整个字符串:
"^[a-zA-Z]+$"
此外,您可以简化您的阅读功能
return ereg("^[a-zA-Z]+$", $myString);
因为if
从已经是布尔值返回true
或false
是多余的。
或者,您可以匹配任何不是字母的字符,并返回结果的补码:
return !ereg("[^a-zA-Z]", $myString);
注意字符集开头的^
,它反转它。 另请注意,您之后不再需要+
,因为单个“坏”字符会导致匹配。
最后......这个建议是针对Java的,因为你的问题上有一个Java标记。 但是, $
在$myString
使它看起来像你正在处理的,也许Perl或PHP? 一些澄清可能会有所帮助。
您的代码看起来像PHP
。 如果字符串中有一个字母,它将返回true
。 要确保字符串只有字母,您需要使用开始和结束锚点 :
在Java
您可以使用String
类的matches
方法:
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中定义。
或者,尝试检查它是否包含字母以外的任何内容:[^ A-Za-z]
执行“是给定类型的所有字符”的最简单方法是检查任何字符是否不属于该类型。
因此,如果\\ W表示非字符,那么只需检查其中一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.