[英]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:]将捕获等价的字符,例如重音符号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.