我正在尝试验证必须符合以下规则的字符串:
- 允许的字符是:
- 所有 Unicode 字母 [az][AZ] 和其他字母,例如 (á, é, í, ó, ú, ü, ñ 等...)
- 所有数字 [0-9]
- 仅限这些特殊字符(空格、撇号、破折号、圆点)
- 该字符串必须至少包含 4 个字母数字字符。空格、撇号、破折号和点不计入最小长度。
- 字符串不能以数字、撇号、破折号或点开头。
- 字符串的字符之间必须至少有 1 个空格。请注意,字符串被修剪为前导和尾随空格,因此永远不会有前导或尾随空格。
这是我走了多远:
if (preg_match("/^[\p{L}\p{M}][\s\p{L}\p{M}-'\.]{4,}$/u", $name, $matches)) {
echo "Match was found: '{$matches[0]}' in '$name'<br />";
}
我很难用空格写出最少 4 个字母数字字符。
我想匹配一个实体的全名,但有一些宽松的条件。
例子
:
"ábc é" --> good
"á bcd" --> good
"abc déf" --> good
"ab cd éf" --> good
"a-1 b4." --> good
"a 123--" --> good
"a 12'34 .-56" --> good
"á" --> bad less than 4 alphanumeric
"ab" --> bad less than 4 alphanumeric
"ábc" --> bad less than 4 alphanumeric
"abcd" --> bad no white space in the string
"1ábc d" --> bad starts with a non letter
"-ábc d" --> bad starts with a non letter
".1ábc d" --> bad starts with a non letter