2 桁の数字と 3 桁の数字を任意の順序で最小 3 個、最大 6 個含む文字列を表す正規表現が必要です。数字は で区切る必要が#
ありますが、スペースを含めることもできます。この文字列の例は次のとおりです。
34 #563# 23
123#678#12#44# 45
これはどう:
^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
/\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*
*