-1

2 桁の数字と 3 桁の数字を任意の順序で最小 3 個、最大 6 個含む文字列を表す正規表現が必要です。数字は で区切る必要が#ありますが、スペースを含めることもできます。この文字列の例は次のとおりです。

34 #563# 23

123#678#12#44# 45
4

2 に答える 2

5

これはどう:

^s*\d{2,3}\s*(?:#\s*\d{2,3}\s*){2,5}$

説明:

^         # Start of string
\s*       # optional whitespace
\d{2,3}   # match a number (2 to 3 digits)
\s*       # optional whitespace
(?:       # Match...
 \#       # - a hashmark
 \s*      # - optional whitespace
 \d{2,3}  # - a number
 \s*      # - optional whitespace
){2,5}    # 2 to 5 times
$         # End of string
于 2012-11-05T21:57:30.013 に答える
2
/\d{2,3}(?:\s*#\s*\d{2,3}){2,5}/

説明:

\d

数字をキャプチャします。

{2,3}

2、3回、その後:

(?: ... )

以下をグループ化しますが、グループ自体がキャプチャするものはキャプチャしません。

\s*

0 個以上のスペースをキャプチャ...

#

...ポンド記号。

\s*

... 0 個以上のスペース...

\d{2,3}

および別の 2 桁または 3 桁の番号。

{2,5}

このグループを 2 回から 5 回行い、合計で 3 回から 6 回の数字にします。

完全な文字列に一致させるには、文字列の先頭と末尾に一致する^\s*ように、先頭と末尾に追加できますが、実際にはカラットとドル記号だけを使用し、代わりに関数を使用することをお勧めします、(または実際には、および)は非常に非効率的です。文字列が 1 つまたは 2 つあれば大したことではありませんが、たとえば、電話帳から番号を抽出する場合は、苦労することになります。\s*$^$trim\s**

于 2012-11-05T22:00:18.440 に答える