正则表达式:仅允许字母和逗号

lau*_*kok 1 php regex preg-match

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

'/[a-zA-Z\s]\,[a-zA-Z\s]/'
Run Code Online (Sandbox Code Playgroud)

第一个是不完美的,因为它允许您输入任意多个逗号,

'/^[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."/>';
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能只允许一个逗号?

另外,不确定这是否太多 - 我可以检查城市的字符输入,例如至少 3 个,国家至少 4 个吗?

谢谢。

jor*_*ker 5

你很接近。尝试这个:

/^[a-zA-Z\s]+\,[a-zA-Z\s]+$/
Run Code Online (Sandbox Code Playgroud)

对于字符数要求:

/^[a-zA-Z\s]{3,}\,[a-zA-Z\s]{4,}$/
Run Code Online (Sandbox Code Playgroud)

  • 像“科罗拉多州卡农市”这样的东西怎么样?几乎每次您看到有人以大写和/或小写形式列举 26 个字母时,这都是一个危险信号,表明他们做错了什么。要匹配任何字母,您必须使用“\p{L}”。欢迎来到新千年。 (2认同)