使用重音字符(如果有人的名字是Pièrre)检查名字/姓氏字段的好单行php正则表达式,可以匹配如下内容:
<?php
$strErrorMessage = null;
if(!preg_match('/\p{L}0-9\s-+/u', trim($_POST["firstname"])))
$strErrorMessage = "Your first name can only contain valid characters, ".
"spaces, minus signs, or numbers.";
?>
这会尝试使用来自this post的unicode验证,但无法正常运行。谷歌似乎很难解决这个问题。
答案 0 :(得分:0)
除了验证名称的难度之外,您还需要将字符放入character class。 /\p{L}0-9\s-+/u
仅匹配“Ä0-9------”之类的序列。你想做的是
/^[\p{L}0-9\s-]+$/u
此外我添加了anchors,它们确保正则表达式尝试匹配完整的字符串。
正如ex3v所提到的,您应该将\p{M}
添加到该类以匹配组合字符。 See Unicode properties.
/^[\p{L}\p{M}0-9\s-]+$/u