我想知道 Regex 是否有任何方法可以接受与给定字符集相关的字符,同时否定其他几个字符?
例如,考虑我想要接受\w除 lettere和 digit之外的所有字符、数字和下划线 () 的情况1。有没有一种快速的方法可以做到这一点?理想情况下,我会喜欢类似于 的东西^[\w^e1]$,尽管我知道这个特定的东西行不通。
您可以通过字符类减法来实现这一点:
[base_group - [excluded_group]]
使用这种格式,该模式^[\w-[e1]]$可用于匹配除字母e和数字之外的所有字母数字字符1。
string[] inputs =
{
"a", "b", "c", "_", "2", "3",
" ", "1", "e" // false cases
};
string pattern = @"^[\w-[e1]]$";
foreach (var input in inputs)
{
Console.WriteLine("{0}: {1}", Regex.IsMatch(input, pattern), input);
}
比 Ahmad 的解决方案更便携但不太简洁的方法是只定义一个排除eand的字符类1。
[a-df-zA-DF-Z02-9]
应该按预期工作。