1

長さが異なる2つの部分で構成される文字列を検証するための正規表現パターンを試してみましたが、全体の長さは変わりません。

全体の長さ = 7 開始セクションの英字のみ 1 ~ 3 文字の終了セクション 4 ~ 6 桁

組み合わせ 1 アルファ + 6 桁または 2 アルファ + 5 桁または 3 アルファ + 4 桁。2 番目と 3 番目のオプションでは、最初の文字にスペースを使用できます。

これまでのところ、^(?:([\sA-Z][AZ]{2})(\d{4})|[\sA-Z]AZ|AZ)$ は単純化できますか? 最後にオプションのアルファ文字を付けるにはどうすればよいですか?

4

2 に答える 2

0

これはうまくいくかもしれません

 # (?i)^(?=.{7}$)(?:[a-z]{1,3}|[ ][a-z]{2,3})\d{4,6}[a-z]?$

 (?i)                     # Case independent
 ^                        # BOL
 (?= .{7} $ )            # 7 chars total

 (?:
      [a-z]{1,3}          # 1 to 3 alpha
   |  
      [ ] [a-z]{2,3}      # or, space plus 2 to 3 alpha
 )

 \d{4,6}                  # 4 to 6 digits
 [a-z]?                   # optional alpha char
 $                        # EOL
于 2013-11-11T22:59:46.990 に答える
0

全体の長さをアサートするには先読みが必要であり、「スペース桁」の開始を防ぐには負の先読みが必要です。

^(?=.{7}$)(?! \d) ?[a-zA-Z]{1,3}\d{4,6}$

いくつかのエッジ ケースを含むライブ デモをご覧ください。

于 2013-11-11T22:54:18.100 に答える