我正在尝试找到一个好的preg_match
表达式,允许所有字母(包含重音字母),空格和这些符号:- '
我认为这可能是一个很好的解决方案'/^\p{L}+$/ui'
,但我找不到一个成功的方法来添加我需要的符号,如果可能的话......
否则我想我应该使用这样的东西:
'#^[a-zA-Z0-9àòäöüÄÖÜ \.\]]+$#'
但是有很多口音我希望找到更好的解决方案。
答案 0 :(得分:1)
尝试将\p{L}
和允许的符号放在括号内:
$name = "B-jör n'Bòrg";
if (preg_match("/^[- '\p{L}]+$/u", $name)) {
echo "$name is a valid name!"; // It is
}
您可能还想添加一些额外的支票,例如确保名称以字母开头和结尾而不是符号。
修改强>
这将确保名称以字母开头/结尾并且不包含连续符号:
$name = "-Björ n''Bòrg-";
if (preg_match("/^\p{L}([- ']\p{L}|\p{L})*$/u", $name)) {
echo "$name is a valid name!"; // It's not
}