正则表达式不能在土耳其语字符上正常工作
Regex does not work properly on Turkish Characters
我的正则表达式有问题。我写了一些代码来检查文本是否匹配,例如订购号。并在 Regexr 上测试我的正则表达式。例如,用户写了“3'üncü”,但正则表达式不匹配。但是如果用户写 9'uncu 然后正则表达式得到匹配。我的正则表达式是;
([0-9]*)(([-/.]|[\w])([n][c][ıIiİuUüÜ]))|([0-9]*)(([-/.]|[\w])([ıIiİuUüÜ][n][c][ıIiİuUüÜ]))
我可以说,正则表达式捕获了土耳其字符,但不能捕获英文字符。这有什么问题?感谢您的帮助。
您的正则表达式工作正常。
下面是一些测试代码:
using System;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var m = Regex.Match("3'üncü", @"([0-9]*)(([-/.]|[\w])([n][c][ıIiİuUüÜ]))|([0-9]*)(([-/.]|[\w])([ıIiİuUüÜ][n][c][ıIiİuUüÜ]))");
Console.WriteLine(m.Success);
Console.WriteLine(m.Value);
}
}
这会打印:
True
üncü
这里是 demo。
可能是您没有使用适当的编码保存 .cs 文件。这是必要的,因为代码(您构建正则表达式的文字字符串)包含在默认编码中无法表示的字符(在我的例子中,是 Western European, CP 1252).
要将文件保存为 Unicode,select 从菜单 文件 -> 高级保存选项 和 select Unicode(UTF-8) 编码。
我的正则表达式有问题。我写了一些代码来检查文本是否匹配,例如订购号。并在 Regexr 上测试我的正则表达式。例如,用户写了“3'üncü”,但正则表达式不匹配。但是如果用户写 9'uncu 然后正则表达式得到匹配。我的正则表达式是;
([0-9]*)(([-/.]|[\w])([n][c][ıIiİuUüÜ]))|([0-9]*)(([-/.]|[\w])([ıIiİuUüÜ][n][c][ıIiİuUüÜ]))
我可以说,正则表达式捕获了土耳其字符,但不能捕获英文字符。这有什么问题?感谢您的帮助。
您的正则表达式工作正常。
下面是一些测试代码:
using System;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var m = Regex.Match("3'üncü", @"([0-9]*)(([-/.]|[\w])([n][c][ıIiİuUüÜ]))|([0-9]*)(([-/.]|[\w])([ıIiİuUüÜ][n][c][ıIiİuUüÜ]))");
Console.WriteLine(m.Success);
Console.WriteLine(m.Value);
}
}
这会打印:
True
üncü
这里是 demo。
可能是您没有使用适当的编码保存 .cs 文件。这是必要的,因为代码(您构建正则表达式的文字字符串)包含在默认编码中无法表示的字符(在我的例子中,是 Western European, CP 1252).
要将文件保存为 Unicode,select 从菜单 文件 -> 高级保存选项 和 select Unicode(UTF-8) 编码。