我想知道Regex是否有办法接受与给定字符集关联的字符,而忽略了其他几个字符?
例如,考虑我希望接受除字母\w
和数字e
之外的所有字符,数字和下划线(1
)的情况。有没有快速的方法来实现这一目标?理想情况下,我喜欢类似于^[\w^e1]$
的东西,虽然我知道这个特定的东西不起作用。
答案 0 :(得分:6)
您可以通过character class subtraction:
来实现这一目标[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);
}
答案 1 :(得分:0)
更多便携式,但不如Ahmad的解决方案简洁明确的方法是定义一个排除e
和1
的字符类。
[a-df-zA-DF-Z02-9]
应该按预期工作。