[英]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.