2010-11-10 129 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

相关问题