我想验证用户输入是这样的: “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