PHP中的重音字符验证

时间:2014-02-27 11:55:39

标签: php regex unicode

使用重音字符(如果有人的名字是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验证,但无法正常运行。谷歌似乎很难解决这个问题。

1 个答案:

答案 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