繁体   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