我在想是否有一种正则表达式的方式,可以接受与给定字符集相关联的字符,同时排除其他几个字符?
例如,考虑这样一个情况:我想接受所有字符、数字和下划线 (\w
),但排除字母e
和数字1
。有没有一种快速实现的方法?理想情况下,我希望像 ^[\w^e1]$
这样的东西,虽然我知道这个具体的正则表达式不会起作用。
[基础组 - [排除组]]
使用这种格式,可以使用模式^[\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);
}
.
匹配任何字符,但在其中它匹配一个字面上的点或句号。同样的规则也适用于量词。Regex.Escape
方法的文档提到了通常受影响的元字符。 - Ahmad Mageede
和1
。[a-df-zA-DF-Z02-9]
应如预期工作。
\w
匹配Ll、Lu、Lt、Lo、Lm、Nd和Pc类别中的所有Unicode字符。这些字符太多了,无法明确列出。 - dtb