正则表达式匹配alpha字符的子集

时间:2012-12-17 12:31:18

标签: regex

我正在尝试检查字符串(只有一个字符长)是否为字母字符,但不匹配它们的特殊子集。我正在寻找的是一个范围为[a-zA-Z]但不匹配任何n, N, e, E, w, W, s, S的字符。

我目前对正则表达式知之甚少,这使我制定了以下内容,但不起作用

[a-zA-Z][^nsewNSEW]

我需要什么正则表达式来实现这一目标?

2 个答案:

答案 0 :(得分:5)

您目前正在尝试匹配字符串两个字符。如何使用否定前瞻呢?

(?![nsewNSEW])[a-zA-Z]

非预见的替代方案是:

[a-df-mo-rt-vx-zA-DF-MO-RT-VX-Z]

答案 1 :(得分:2)

如果没有负面预测,您可以使用多个范围:

/[a-df-mo-rt-vx-z]/i

这将除了排除的字符之外的所有内容,因为我们只构造多个范围以传递给字符类。不区分大小写的标志用于避免重复大写字母的范围。

值得注意的是,虽然详细,但您也可以构造没有范围的任意字符类:

/[abcdfghijklmopqrtuvxyz]/i

我使用范围机制,因为它更简短,但它们在功能上是等效的。