C# 匹配字母数字字符,包括拉丁unicode
我有一个与ASCII字母数字字符匹配的工作正则表达式:C# 匹配字母数字字符,包括拉丁unicode,c#,regex,C#,Regex,我有一个与ASCII字母数字字符匹配的工作正则表达式: string pattern = "^[a-zA-Z0-9]+$"; Match match = Regex.Match(input, pattern); if (match.Success) { ... string pattern = "^[{Latin}0-9]+$"; [ắẮằẰẵẴẳẲấẤầẦẫẪẩẨảẢạ ẠặẶậẬḁḀ ẚ ḃḂḅḄḇḆ ḉḈ ḋḊḑḐḍḌḓḒḏḎ ẟ ếẾềỀễỄểỂẽẼḝḜḗḖḕḔẻẺẹ
string pattern = "^[a-zA-Z0-9]+$";
Match match = Regex.Match(input, pattern);
if (match.Success)
{
...
string pattern = "^[{Latin}0-9]+$";
[ắẮằẰẵẴẳẲấẤầẦẫẪẩẨảẢạ ẠặẶậẬḁḀ ẚ ḃḂḅḄḇḆ ḉḈ ḋḊḑḐḍḌḓḒḏḎ ẟ ếẾềỀễỄểỂẽẼḝḜḗḖḕḔẻẺẹẸ ệỆḙḘḛḚ ḟḞ ḡḠ ḧḦḣḢḩḨḥḤḫḪẖ ḯḮỉỈịỊḭḬ ḱḰḳḲḵḴ ḷḶḹḸḽḼḻḺ ỻỺ ḿḾṁṀṃṂ ṅṄṇṆṋṊṉṈ ốỐồỒỗỖổỔṍṌṏṎṓṒṑṐỏỎớỚ ờỜỡỠởỞợỢọỌộỘ ṕṔṗṖ ṙṘṛṚṝṜṟṞ ṥṤṧṦṡṠṣṢṩṨẛ ẞ ẜ ẝ ẗṫṪṭṬṱṰṯṮ ṹṸṻṺủỦứỨừỪữỮửỬựỰụỤṳṲ ṷṶṵṴ ṽṼṿṾ ỽỼ ẃẂẁẀẘẅẄẇẆẉẈ ẍẌẋẊ ỳỲẙỹỸẏẎỷỶỵỴ ỿỾ ẑẐẓẒẕẔ]
我想扩展它以应用相同的概念,但包括所有拉丁字符(例如å、Ø等)
string pattern = "^[{Latin}0-9]+$";
我已经读到了。我试过这个:
string pattern = "^[{Latin}0-9]+$";
但它与我期望的模式不匹配。如何使用unicode脚本或其他方法匹配拉丁unicode?使用
^[\p{L}\s]+$
匹配任何unicode字符
string pattern = "^[{Latin}0-9]+$";
或^[\w\u00c0-\u017e]$
匹配从00c0到017e的任何字母加unicode字符(使用charmap查找所需的unicode字符范围)
string pattern = "^[{Latin}0-9]+$";
使用
^[\p{L}\s]+$
匹配任何unicode字符
string pattern = "^[{Latin}0-9]+$";
或^[\w\u00c0-\u017e]$
匹配从00c0到017e的任何字母加unicode字符(使用charmap查找所需的unicode字符范围)
string pattern = "^[{Latin}0-9]+$";
Unicode脚本不受.NET正则表达式引擎支持,但Unicode块受支持。话虽如此,您可以使用以下正则表达式匹配所有拉丁字符:
string pattern = "^[{Latin}0-9]+$";
^[\p{IsBasicLatin}\p{IsLatin-1Supplement}\p{IsLatinExtended-A}\p{IsLatinExtended-B}0-9]+$
:U+0000–U+007F\p{IsBasicLatin}
:U+0080–U+00FF\p{IsLatin-1supplment}
:U+0100–U+017F\p{IsLatinExtended-A}
:U+0180–U+024F\p{IsLatinExtended-B}
^[\u0000-\u024F0-9]+$
string pattern = "^[{Latin}0-9]+$";
<>您可能想考虑匹配<代码> \p{IsLaLin ExpDeldOut}} /Cuth>,它是U+1EO-U+1EFF的命名块,它包含256个附加字符:
string pattern = "^[a-zA-Z0-9]+$";
Match match = Regex.Match(input, pattern);
if (match.Success)
{
...
string pattern = "^[{Latin}0-9]+$";
[ắẮằẰẵẴẳẲấẤầẦẫẪẩẨảẢạ ẠặẶậẬḁḀ ẚ ḃḂḅḄḇḆ ḉḈ ḋḊḑḐḍḌḓḒḏḎ ẟ ếẾềỀễỄểỂẽẼḝḜḗḖḕḔẻẺẹẸ ệỆḙḘḛḚ ḟḞ ḡḠ ḧḦḣḢḩḨḥḤḫḪẖ ḯḮỉỈịỊḭḬ ḱḰḳḲḵḴ ḷḶḹḸḽḼḻḺ ỻỺ ḿḾṁṀṃṂ ṅṄṇṆṋṊṉṈ ốỐồỒỗỖổỔṍṌṏṎṓṒṑṐỏỎớỚ ờỜỡỠởỞợỢọỌộỘ ṕṔṗṖ ṙṘṛṚṝṜṟṞ ṥṤṧṦṡṠṣṢṩṨẛ ẞ ẜ ẝ ẗṫṪṭṬṱṰṯṮ ṹṸṻṺủỦứỨừỪữỮửỬựỰụỤṳṲ ṷṶṵṴ ṽṼṿṾ ỽỼ ẃẂẁẀẘẅẄẇẆẉẈ ẍẌẋẊ ỳỲẙỹỸẏẎỷỶỵỴ ỿỾ ẑẐẓẒẕẔ]
.NET正则表达式引擎不支持Unicode脚本,但支持Unicode块。话虽如此,您可以使用以下正则表达式匹配所有拉丁字符:
string pattern = "^[{Latin}0-9]+$";
^[\p{IsBasicLatin}\p{IsLatin-1Supplement}\p{IsLatinExtended-A}\p{IsLatinExtended-B}0-9]+$
:U+0000–U+007F\p{IsBasicLatin}
:U+0080–U+00FF\p{IsLatin-1supplment}
:U+0100–U+017F\p{IsLatinExtended-A}
:U+0180–U+024F\p{IsLatinExtended-B}
^[\u0000-\u024F0-9]+$
string pattern = "^[{Latin}0-9]+$";
<>您可能想考虑匹配<代码> \p{IsLaLin ExpDeldOut}} /Cuth>,它是U+1EO-U+1EFF的命名块,它包含256个附加字符:
string pattern = "^[a-zA-Z0-9]+$";
Match match = Regex.Match(input, pattern);
if (match.Success)
{
...
string pattern = "^[{Latin}0-9]+$";
[ắẮằẰẵẴẳẲấẤầẦẫẪẩẨảẢạ ẠặẶậẬḁḀ ẚ ḃḂḅḄḇḆ ḉḈ ḋḊḑḐḍḌḓḒḏḎ ẟ ếẾềỀễỄểỂẽẼḝḜḗḖḕḔẻẺẹẸ ệỆḙḘḛḚ ḟḞ ḡḠ ḧḦḣḢḩḨḥḤḫḪẖ ḯḮỉỈịỊḭḬ ḱḰḳḲḵḴ ḷḶḹḸḽḼḻḺ ỻỺ ḿḾṁṀṃṂ ṅṄṇṆṋṊṉṈ ốỐồỒỗỖổỔṍṌṏṎṓṒṑṐỏỎớỚ ờỜỡỠởỞợỢọỌộỘ ṕṔṗṖ ṙṘṛṚṝṜṟṞ ṥṤṧṦṡṠṣṢṩṨẛ ẞ ẜ ẝ ẗṫṪṭṬṱṰṯṮ ṹṸṻṺủỦứỨừỪữỮửỬựỰụỤṳṲ ṷṶṵṴ ṽṼṿṾ ỽỼ ẃẂẁẀẘẅẄẇẆẉẈ ẍẌẋẊ ỳỲẙỹỸẏẎỷỶỵỴ ỿỾ ẑẐẓẒẕẔ]
我将使用unicode脚本
string pattern = "^[{Latin}0-9]+$";
正如Wikipedia()所描述的,我将使用拉丁语-1补遗(00C0-00FF)、拉丁语扩展-A(0100-017F)、拉丁语扩展-B(0180-024F)和您的ASCII字母数字字符模式
string pattern = "^[{Latin}0-9]+$";
string pattern = "^[a-zA-Z0-9\\u00C0–\\u024F]+$";
我将使用unicode脚本
string pattern = "^[{Latin}0-9]+$";
正如Wikipedia()所描述的,我将使用拉丁语-1补遗(00C0-00FF)、拉丁语扩展-A(0100-017F)、拉丁语扩展-B(0180-024F)和您的ASCII字母数字字符模式
string pattern = "^[{Latin}0-9]+$";
string pattern = "^[a-zA-Z0-9\\u00C0–\\u024F]+$";
@mtmacdonald的可能重复项可能重复项您需要使用(
@“…”
)或转义反斜杠。@stej4n为什么在第二个示例中,当ASCII字母字符低于范围00C0时,匹配项中包含ASCII字母字符?因为我添加了\w与ASCII字符匹配的字符chars@mtmacdonald您需要使用(@“…”
)或转义反斜杠。@stej4n在第二个示例中,当ASCII字母字符低于范围00C0时,为什么ASCII字母字符包含在匹配项中?因为我添加了\w哪些匹配ASCII字符123Æ不匹配?123Æ不匹配?答案很好。您可能希望添加\p{islatinedeadditional}
@AnthonyFaull谢谢。添加。回答很好。您可能希望添加\p{IslatinedExtendedAdditional}
@AnthonyFaull谢谢。添加。