2014-01-18 48 views
0

我想验证用户输入是这样的: “Ahmedab​​ad Intl-Ahmedab​​ad,India(AMD)”,第一个字母是大写字母,第一个字母可以是空格,第一个字母可以是空格。然后用一个空格逗号,然后用'('字母')'一些字母。 我已经尝试过这样的:php正则表达式的空间

preg_match('/^([a-zA-Z- ]+), ([a-zA-Z]+)([A-Z()]+)/', $string), 

有谁知道为什么它不工作?感谢

+0

尝试\ S在正则表达式 –

+1

定义 “不工作” http://regex101.com/r/iZ7yX6 – TiiJ7

+1

你的语句返回' int(1)'为'$ string ='印度艾哈迈达巴德国际艾哈迈达巴德(AMD)';'并在代码末尾加上';'。 – snwflk

回答

0

您需要反斜线添加到括号。试试这个:

$string = "Ahmedabad Intl-Ahmedabad, India(AMD)"; 
echo preg_match('/^[a-zA-Z- ]+, [a-zA-Z]+\([A-Z]+\)/', $string); //1 

$string = "Ahmedabad Intl-Ahmedabad, India(AMD"; 
echo preg_match('/^[a-zA-Z- ]+, [a-zA-Z]+\([A-Z]+\)/', $string); //0 
0

您可以使用此:

if (preg_match('~^[A-Z][a-z]*+(?>[ -][A-Z][a-z]*)*+, [A-Z][a-z]*\([A-Z]+\)$~', $string)) { 
    // true 
} else { 
    // false 
}