我正在尝试检查一个只有一个字符长的字符串是否是一个字母字符,但不匹配它们的特殊子集。我正在寻找的是一个在范围内[a-zA-Z]
但不匹配任何n, N, e, E, w, W, s, S
.
我目前对正则表达式知之甚少,导致我制定了以下内容,但这是行不通的
[a-zA-Z][^nsewNSEW]
我需要什么正则表达式来实现这一目标?
我正在尝试检查一个只有一个字符长的字符串是否是一个字母字符,但不匹配它们的特殊子集。我正在寻找的是一个在范围内[a-zA-Z]
但不匹配任何n, N, e, E, w, W, s, S
.
我目前对正则表达式知之甚少,导致我制定了以下内容,但这是行不通的
[a-zA-Z][^nsewNSEW]
我需要什么正则表达式来实现这一目标?
您当前正在尝试匹配一个长度为两个字符的字符串。改用负前瞻如何?
(?![nsewNSEW])[a-zA-Z]
非前瞻替代方案是:
[a-df-mo-rt-vx-zA-DF-MO-RT-VX-Z]
如果负前瞻不可用,您可以使用多个范围:
/[a-df-mo-rt-vx-z]/i
这将匹配除排除字符之外的所有内容,因为我们只是构造多个范围以传递给字符类。不区分大小写标志用于避免重复大写字母的范围。
值得注意的是,虽然很冗长,但您也可以构造没有范围的任意字符类:
/[abcdfghijklmopqrtuvxyz]/i
我会使用范围机制,因为它更简短,但它们在功能上是等效的。