1

1文字の長さの文字列が英字であるかどうかを確認しようとしていますが、それらの特別なサブセットと一致していません。私が探しているのは、範囲内にある[a-zA-Z]が、のいずれにも一致しない文字ですn, N, e, E, w, W, s, S

私が現在正規表現についてほとんど知らないことから、次のように定式化することになりましたが、これは機能しません

[a-zA-Z][^nsewNSEW]

これを達成するには、どの正規表現が必要ですか?

4

2 に答える 2

5

現在、 2文字の長さの文字列を一致させようとしています。代わりにネガティブ先読みを使用するのはどうですか?

(?![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 に答える