2014-01-18 75 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 
}