[英]How to filter all lowercase letters from a string having special characters?
[英]How to allow regular letters/characters of all languages (in a string) while prevent special characters
首先,這不是重復的(據我所知)。
我真正想要的是允許用戶擁有一個僅包含有效字符的用戶名(個人資料名稱),在我的情況下,這些字符是所有語言的字母以及空格。 但同時防止數字、符號(如?@#$%^&*()|\/;'":.=+-_,<>,~
)、其他不常見的符號(如©®♣♥♠♩¸¸♪·¯·♫
)、換行符、制表符和類似字符、表情符號以及名稱中不常見的每個字符...
好吧,為了更清楚,我想實現與 Facebook 完全相同的配置文件名稱系統。
我正在使用 JS(節點),到目前為止我嘗試了正則表達式,但我認為在該表達式中鍵入 unicode 中的每個有效字符范圍是不明智的嗎? 當我需要編輯這些范圍時,我什至不會嘗試考慮這會對我造成什么影響......
有沒有圖書館可以提供一種方法來做到這一點? 如果沒有,我還有什么其他選擇?
任何幫助表示贊賞!
僅對於英語,您可以使用簡單的字符 class 例如/^[a-zA-Z ]$/
或單詞 char /^[\w ]$/
。 有一個 Unicode 等效於此:
/^[\p{L}\p{M}\p{Zs}]{2,30}$/u
解釋:
\p{L}
- 表示任何語言的字母字符\p{M}
- 表示一個標記(重音等)\p{Zs}
- 表示空格字符,例如常規空格
和日文空格字符
如果您想在開始和結束時防止空格,請使用這些負前瞻:
/^(?!\p{Zs})(?!.*\p{Zs}$)[\p{L}\p{M}\p{Zs}]{2,30}$/u
示例 function:
function validateName(name) {
return /^[\p{L}\p{M}\p{Zs}]{2,30}$/u.test(name);
}
請參閱https://regex101.com/r/A4QDIf/1上的演示
請參閱 Unicode 正則表達式上的文檔: https://javascript.info/regexp-unicode
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.