簡體   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