JavaScript/PHP正则表达式

JavaScript/PHP Regular Expression

本文关键字:正则表达式 PHP JavaScript      更新时间:2023-09-26

我正试图将名字和姓氏与这样的东西匹配。

$pattern = '/[a-zA-Z'-]{3,30} +[a-zA-Z]+/';

这个工作很好,除非我有这样的名字Mélissa Smith

我的匹配变成了Lissa Smith

如何匹配所有特殊字符,如é

在javascript中,你可以使用unicode字符范围而不是a- za -z:

"Mélissa Smith".match(  /['u80-'uffff]{3,30} +['u80-'uffff]+/  )

equals: [" msamissa Smith"]

使用/u修饰符将正则表达式置于Unicode模式,并使用适当的Unicode字符类而不是仅硬编码拉丁字母:

$pattern = '/^('pL|-){3,30}'s+'pL+$/u';

我还锚定了^$之间的模式,因为否则它可能会匹配你不希望它匹配的东西。

您必须记住,当您这样做时,输入(以及模式本身)必须以UTF-8编码

然而,必须指出的是,像这样天真地解析名字不会给你带来很好的结果。对于这么简单的东西来说,人们的全名太复杂了。

尝试使用POSIX表达式[:alpha:]而不是[a-zA-Z-]来捕获字符。[:alpha:]将捕获等效字符,如重音。

http://www.regular-expressions.info/posixbrackets.html