Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何对某些特定的国家/地区字符使用正则表达式?_Javascript_Regex - Fatal编程技术网

Javascript 如何对某些特定的国家/地区字符使用正则表达式?

Javascript 如何对某些特定的国家/地区字符使用正则表达式?,javascript,regex,Javascript,Regex,我正在使用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àâäèéê

我正在使用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条件下的哪个国家/地区字符。有人能帮忙吗?

我对您提到的任何语言都不熟悉,但我可以告诉您如何为任何语言创建正则表达式。

有一种非常简单的方法可以将所有正则表达式逻辑(在英语中可以很容易地应用)应用于任何使用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提供的十六进制顺序(例如:\u0A10到\u0A1F),使用其他Unicode字符或其等效十六进制代码

尝试:[电-触] 中国人

它将匹配之间的所有字符电 及触 如果unicode.org按此顺序提供

类似地,您可以将其他语言的字符全部添加到一个正则表达式中,如下所示:

/[电-触ڀ-ڴᄀ-ᆿ]/       //combination of Chinese, Arabic, Korean
注意:


确保您对字母表使用了正确的范围,我对您提到的任何语言都不熟悉,但我可以告诉您如何为任何语言创建正则表达式。

有一种非常简单的方法可以将所有正则表达式逻辑(在英语中可以很容易地应用)应用于任何使用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提供的十六进制顺序(例如:\u0A10到\u0A1F),使用其他Unicode字符或其等效十六进制代码

尝试:[电-触] 中国人

它将匹配之间的所有字符电 及触 如果unicode.org按此顺序提供

类似地,您可以将其他语言的字符全部添加到一个正则表达式中,如下所示:

/[电-触ڀ-ڴᄀ-ᆿ]/       //combination of Chinese, Arabic, Korean
注意:



请确保您对字母表使用了正确的范围。这里有一个可以帮助您。对于某些语言,您可以发现,除了过滤恶意代码之外,一般没有理由限制用户名中的字符。我以前也尝试过在那里搜索,但无法搜索德语、西班牙语、法语、意大利语。Mybe i a我只是从正则表达式开始,这就是为什么我找不到我要找的@WiktorStribiżewSee我的第二个链接到我的答案之一。谢谢@WiktorStribiżew,我可以从给定的链接中找到其中的一些。这里有一个可以帮助我。对于某些语言,你可以发现,一般来说,没有理由限制usernam中的字符es,除了过滤恶意代码之外,我以前也尝试过在那里搜索,但我无法搜索德语、西班牙语、法语、意大利语。Mybe我只是从正则表达式开始,这就是为什么我无法找到我要找的@WiktorStribiżewSee我的第二个链接到我的答案之一。谢谢@WiktorStribiżew,我能够从给定的墨水。但是我在哪里可以找到我提到的语言的字符范围?@TariqHusain用谷歌搜索Unicode图表-语言名称…检查这一年这是我面临的主要问题,我没有从你给定的链接中找到中文和法文等的字符集。@TariqHusain,你必须用谷歌搜索它并找到范围…正如我所说的那样已将fr韩语作为“韩语角色”找到了这个链接,它告诉我韩国语字母的范围-@TariqHusain…转到这个链接的第三页-。它列出了韩国语中所有可能的辅音/元音。你可以将辅音和元音的范围结合起来,为韩国语和我的回答中提到的其他语言创建一个很好的正则表达式,但在那里我可以找到这个字符r我提到的语言的范围?@TariqHusain以Unicode图表的形式搜索它-语言名称…今年检查这是我面临的主要问题,我没有从您给定的链接中获得中文和法文等的字符集。@TariqHusain,您必须搜索它并找到范围…就像我在韩文中所做的那样“韩国语字符”并找到了这个链接,它告诉我韩国语字母的范围-@TariqHusain…转到这个链接的第三页-。它列出了韩国语中所有可能的辅音/元音。你可以将辅音和元音的范围结合起来,为韩国语和我在回答中提到的其他语言创建一个很好的正则表达式