2010-11-10 179 views
0

我想讓用戶輸入自己的城鎮/城市和國家,所以我想只允許字母和逗號在城市和國家之間,下面是我來了,但它不與第二表達正則表達式:允許字母和逗號之間只有

'/[a-zA-Z\s]\,[a-zA-Z\s]/' 

第一個是不完美的,因爲你希望把它BCOS使盡可能多的逗號工作,

'/^[a-zA-Z\s\,]+$/' 

if(!preg_match('/^[a-zA-Z\s\,]+$/', $mem_town_city_country) || !preg_match('/[a-zA-Z\s]\,[a-zA-Z\s]/', $mem_town_city_country)) 
{ 
    $error = true; 
    echo '<error elementid="mem_town_city_country" message="TOWN/CITY, COUNTRY - sorry, they appear to be incorrect."/>'; 
} 

我怎樣才能讓一個只有逗號?

另外,不知道這是否太多 - 我可以檢查城市的字符輸入,例如至少3個,並且至少4個國家?

謝謝。

回答

3

你很近。試試這個:

/^[a-zA-Z\s]+\,[a-zA-Z\s]+$/ 

對於字符要求人數:

/^[a-zA-Z\s]{3,}\,[a-zA-Z\s]{4,}$/ 
+0

加入{3,}而不是加上你說你至少需要3個字符(對城市和國家的要求) – Michael 2010-11-10 02:44:36

+0

也可以使用\ w – Michael 2010-11-10 02:46:38

+0

@Michael代替a-zA-Z。 \ w將包含下劃線和數字。 – jordanbtucker 2010-11-10 02:47:28

0

如此接近!事實上,你問的額外是非常解決這個問題需要一個:

'/[a-zA-Z\s]{3,}\,[a-zA-Z\s]{4,}/' 

你有正確定義的字符類,但沒有指出應該如何往往是repeated

+0

非常感謝! :-) – laukok 2010-11-10 02:50:50

+0

再一次,'[a-zA-Z]'是寫'(?= \ p {ASCII})\ pL'的不好方法。 – tchrist 2010-11-10 05:49:17

相關問題