我想验证用户输入,如下所示: “艾哈迈达巴德国际 - 艾哈迈达巴德,印度(AMD)”,第一个字母是资本,可以有空间和 - 在第一部分。然后用一个空格逗号,然后用'('letters')'写一些字母。 我试过这样的话:
preg_match('/^([a-zA-Z- ]+), ([a-zA-Z]+)([A-Z()]+)/', $string),
有谁知道为什么它不起作用?感谢
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分:0)
您可以使用:
if (preg_match('~^[A-Z][a-z]*+(?>[ -][A-Z][a-z]*)*+, [A-Z][a-z]*\([A-Z]+\)$~', $string)) {
// true
} else {
// false
}