Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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
C# C语言正则表达式中的外文字符#_C#_Regex_Non English - Fatal编程技术网

C# C语言正则表达式中的外文字符#

C# C语言正则表达式中的外文字符#,c#,regex,non-english,C#,Regex,Non English,在C代码中,我试图传递汉字:“中文ABC123“ 当我使用字母数字时,通常使用“^[a-zA-Z0-9\s]+$” 它不适用于”中文ABC123“和正则表达式验证失败 我还需要为C#?添加哪些表达式来匹配任何语言使用中的任何字母字符: \p{L} 如果您还想匹配数字: [\p{L}\p{Nd}]+ \p{L}。。。匹配unicode类别字母的字符。 它是[\p{Ll}\p{Lu}\p{Lt}\p{Lm}\p{Lo}] \p{Ll}。。。匹配小写字母。(abc) \p{Lu}。。。匹配大写字母

在C代码中,我试图传递汉字:
“中文ABC123“

当我使用字母数字时,通常使用
“^[a-zA-Z0-9\s]+$”

它不适用于
”中文ABC123“
和正则表达式验证失败


我还需要为C#?

添加哪些表达式来匹配任何语言使用中的任何字母字符:

\p{L}
如果您还想匹配数字:

[\p{L}\p{Nd}]+
\p{L}
。。。匹配unicode类别字母的字符。
它是[\p{Ll}\p{Lu}\p{Lt}\p{Lm}\p{Lo}]
\p{Ll}
。。。匹配小写字母。(abc)
\p{Lu}
。。。匹配大写字母。(ABC)
\p{Lt}
。。。匹配标题字母
\p{Lm}
。。。匹配修饰字母。
\p{Lo}
。。。匹配没有大小写的字母。(中文)

\p{Nd}
…匹配unicode类别十进制数字的字符。


只需将:
^[a-zA-Z0-9\s]+$
替换为
^[\p{L}0-9\s]+$
,感谢@Andie2302指出了正确的方法

此外,对于世界上的许多语言来说,它仍然具有需要主要字符生成的“加法字符”(例如泰语单词)เก็บ' 如果仅使用\p{L},它将仅显示'เกบ', 您可以看到,单词中缺少一些符号)

这就是为什么只有
\p{L}
不适用于所有外语

所以,您需要使用下面的代码来支持几乎所有的外语

\p{L}\p{M}
注:

L代表“字母”(所有语言的字母,但不包括“标记”)

M代表“标记”(“标记”不能单独显示,它需要“字母”来显示)

除此之外,您还需要号码,请使用下面的代码

\p{N}
注:

N代表“数字”


感谢这个网站提供了非常有用的信息


或者,如果标点符号正确,可以使用更简单的
\w
()代替
[\p{L}0-9]
。顺便问一下,这一个与html5模式存在巨大冲突,我为html5模式属性获取了这一个,但它无法验证。你有没有想法为所有语言使用html5模式attirbute?@user2683269 JavaScript(因此html5输入模式)不支持
\p
,并将
\w
视为“拉丁文字字符”,因此这一点更为棘手:除了中文和日文字符外,
\p{Lo}
还可以捕获哪些其他语言?@bzlm在.NET中获取有关
\w
的更多信息:(请注意,如果使用符合ECMAScript的行为,则
\w
不适用于所有语言。)