繁体   English   中英

JavaScript / PHP正则表达式

[英]JavaScript/PHP Regular Expression

我正在尝试将名字和姓氏与此类匹配。

$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]+/  )

等于:[“梅丽莎·史密斯”]

使用/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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM