正则表达式:只允许使用字母和逗号

时间:2010-11-10 02:36:06

标签: php regex preg-match

我想让用户输入他们自己的城镇/城市和国家,所以我想只在城市和国家之间允许使用字母和逗号,下面是我想出的但是它不适用于第二个表达

'/[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 个答案:

答案 0 :(得分:3)

你很亲密。试试这个:

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

对于要求的字符数:

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

答案 1 :(得分:1)

只允许字母,至少需要1个字母,也允许逗号:

var regex = new RegExp('^[a-zA-Z]{1,}');

if (regex.test(query)) {    
    // do whatever you want
}

答案 2 :(得分:0)

如此接近!事实上,你要求的额外费用是这个需要的解决方案:

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

您已正确定义了角色类,但没有说明它应该是repeated的频率。