我正在尝试检查字符串(只有一个字符长)是否为字母字符,但不匹配它们的特殊子集。我正在寻找的是一个范围为[a-zA-Z]
但不匹配任何n, N, e, E, w, W, s, S
的字符。
我目前对正则表达式知之甚少,这使我制定了以下内容,但不起作用
[a-zA-Z][^nsewNSEW]
我需要什么正则表达式来实现这一目标?
答案 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
我使用范围机制,因为它更简短,但它们在功能上是等效的。