1

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

我目前对正则表达式知之甚少,导致我制定了以下内容,但这是行不通的

[a-zA-Z][^nsewNSEW]

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

4

2 回答 2

5

您当前正在尝试匹配一个长度为两个字符的字符串。改用负前瞻如何?

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

非前瞻替代方案是:

[a-df-mo-rt-vx-zA-DF-MO-RT-VX-Z]
于 2012-12-17T12:33:55.260 回答
2

如果负前瞻不可用,您可以使用多个范围:

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

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

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

/[abcdfghijklmopqrtuvxyz]/i

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

于 2012-12-17T12:45:41.413 回答