簡體   English   中英

PHP正則表達式。 檢查String是否僅包含字母

[英]PHP Regular Expression. Check if String contains ONLY letters

在PHP中,如何檢查String是否只包含字母? 我想寫一個if語句,如果有(空格,數字,符號)或除azAZ之外的任何其他內容,將返回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從已經是布爾值返回truefalse是多余的。


或者,您可以匹配任何不是字母的字符,並返回結果的補碼:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM