我想驗證用戶輸入是這樣的: 「Ahmedabad Intl-Ahmedabad,India(AMD)」,第一個字母是大寫字母,第一個字母可以是空格,第一個字母可以是空格。然後用一個空格逗號,然後用'('字母')'一些字母。 我已經嘗試過這樣的:php正則表達式的空間
preg_match('/^([a-zA-Z- ]+), ([a-zA-Z]+)([A-Z()]+)/', $string),
有誰知道爲什麼它不工作?感謝
我想驗證用戶輸入是這樣的: 「Ahmedabad Intl-Ahmedabad,India(AMD)」,第一個字母是大寫字母,第一個字母可以是空格,第一個字母可以是空格。然後用一個空格逗號,然後用'('字母')'一些字母。 我已經嘗試過這樣的:php正則表達式的空間
preg_match('/^([a-zA-Z- ]+), ([a-zA-Z]+)([A-Z()]+)/', $string),
有誰知道爲什麼它不工作?感謝
您需要反斜線添加到括號。試試這個:
$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
<?php
$foo = "Dave Smith";
$bar = "SamSpade";
$baz = "Dave\t\t\tSmith";
var_dump(preg_match('/\s/',$foo));
var_dump(preg_match('/\s/',$bar));
var_dump(preg_match('/\s/',$baz));
輸出
int(1)
int(0)
int(1)
見:https://stackoverflow.com/questions/1161708/php-detect-whitespace-between-strings
您可以使用此:
if (preg_match('~^[A-Z][a-z]*+(?>[ -][A-Z][a-z]*)*+, [A-Z][a-z]*\([A-Z]+\)$~', $string)) {
// true
} else {
// false
}
嘗試\ S在正則表達式 –
定義 「不工作」 http://regex101.com/r/iZ7yX6 – TiiJ7
你的語句返回' int(1)'爲'$ string ='印度艾哈邁達巴德國際艾哈邁達巴德(AMD)';'並在代碼末尾加上';'。 – snwflk