8

それで、私は抵抗値のようなものの正規表現を書き出そうとしてきました。これには、一定量の数字と最大 1 文字が含まれますが、常に一定量の合計文字数になります (4 つの例を使用しましょう)。 -文字抵抗コード)。

最初にできましたが'\d*[RKM]\d*'、それはのようなことを可能にし'R'ます。

また、次のようなこともできます'[\dRKM]{4}'が、これにより、必要な値ではないようなことが可能'RRR4'になります。

'\d{1,4}[Rr]\d{0,3} | ([RKM]\d{3}) | (\d{4})'、より具体的ではありますが、それでも'1234R567'4 文字ではないものは許可されます。

基本的に、もっとコンパクトな書き方はあり'[RKM]\d\d\d | \d[RKM]\d\d | \d\d[RKM]\d | \d\d\d[RKM] | \d\d\d\d'ますか?

4

1 に答える 1

9

正規表現のフレーバーに応じて、先読みを使用できます。

^(?!(?:\d*\D){2})[\dRKM]{4}$
  • (?!(?:\d*\D)- 数字以外の文字が 2 つないことをアサートします。

または:

^(?=.{4}$)\d*(?:[RKM]\d*)?$
  • (?=.{4}$)- 文字列の長さが 4 であることをアサートします。

参照:正規表現: AND 演算子はありますか?

于 2013-07-17T13:37:19.413 に答える