![](/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.