簡體   English   中英

如何在某些特定國家/地區使用正則表達式?

[英]How to use regex for some specific country character?

我在JS中使用正則表達式驗證用戶名。 但是,這給了我另一個國家角色的錯誤。 所以我找到了另一個國家字符的正則表達式。

if(/^[a-zA-Z0-9äöüÄÖÜß\u4E00-\u9FAF\u3040-\u3096\u30A1-\u30FA\uFF66-\uFF9D\u31F0-\u31FF\x30A0-\x30FFñáéíóúü\p{Han}\u1100-\u11FF|\u3130-\u318F|\uA960-\uA97F|\uAC00-\uD7AF|\uD7B0-\uD7FFàâäèéêëîïôœùûüÿçÀÂÄÈÉÊËÎÏÔŒÙÛÜŸÇ\u00C0-\u017F\u4E00-\u9FFF|\u2FF0-\u2FFF|\u31C0-\u31EF|\u3200-\u9FBF|\uF900-\uFAFFzàèéìòóù\u00E0\u00E8\u00E9\u00EC\u00F2\u00F3\u00F9._-]{1,160}$/i.test(text)){        
          console.log('correct word');
        } else {
          console.log('wrong word');
        }

但是我只想允許某些特定的國家,例如

Korean: Hangul, Chosŏn'gŭl
Japanese: Hiragana, katakana (full width), kanji
German
Spanish
French
Italian
Chinese: Simplified Chinese
Russian
Portuguese.

我希望我可以手動刪除任何國家(地區)字符,例如,我要刪除“簡體中文”,但是我無法在代碼中執行任何操作,因為我不知道if條件中哪個字符串用於哪個國家(地區)字符。 誰能幫忙嗎?

我不熟悉您提到的任何一種語言,但是我可以告訴您如何為任何一種語言創建RegEx。

有一種非常簡單的方法可以將您所有的RegEx邏輯(一種可以輕松應用英語)應用於使用Unicode的任何語言。

為了匹配一系列Unicode字符(如所有字母[A-Za-z]),我們可以使用

[\u0041-\u005A] where \u0041 is Hex-Code for A and \u005A is Hex Code for Z
'matchCAPS leTTer'.match(/[\u0041-\u005A]+/g)
//output ["CAPS", "TT"]

'matchCAPS leTTer'.match(/[A-Z]+/g)
//output ["CAPS", "TT"]

以相同的方式,我們可以根據unicode.org提供的其他Unicode字符(如\\ u0A10到\\ u0A1F)的十六進制順序使用其他Unicode字符或等效的十六進制代碼。

試試:中文的[電觸]

如果由unicode.org按此順序提供,它將匹配電和觸之間的所有字符

同樣,您可以在一個regEx中將其他語言的字符一起添加為

/[電-觸ڀ-ڴᄀ-ᆿ]/       //combination of Chinese, Arabic, Korean

注意:

確保您使用的字母正確范圍

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM