誰かが助けてくれれば幸いです..
文字列の任意の位置 (先頭を除く) でダッシュ (-) の出現を許可する必要があります。
私の正規表現は次のとおりです。
^[+]?[0-9]{3,10}$
次の可能性を許可したい:
+7-777-77777
7-7-7-7-7-77
などなど、プラス (+) と最初の数字の後の任意の場所にダッシュを付けることができます。
前もって感謝します!
誰かが助けてくれれば幸いです..
文字列の任意の位置 (先頭を除く) でダッシュ (-) の出現を許可する必要があります。
私の正規表現は次のとおりです。
^[+]?[0-9]{3,10}$
次の可能性を許可したい:
+7-777-77777
7-7-7-7-7-77
などなど、プラス (+) と最初の数字の後の任意の場所にダッシュを付けることができます。
前もって感謝します!
先読みが使える
^(?=([^\d]*\d){3,10}[^\d]*$)[+]?\d+(-\d+)*$
--------------------------
|
|->match further only if there are 3 to 10 digits in string
-
これは、オプションで文字列の間にある3 ~ 10 桁の文字列に一致します。
ここで試してみてください
文字列の間にオプションのスペースが必要な場合
^(?=([^\d]*\d){3,10}[^\d]*$)[+]?\d+(\s*-\s*\d+)*$
これには、先頭にオプションのプラスが付いた数字で入力の開始と終了が必要です
^\+?\d[\d-]{,8}\d$
あなたが探しているパターンはこれだと思います:
^[+]?[0-9][0-9-]{2,9}$
これは、オプションのプラスに一致し、その後に 10 進数が続き、その後に 2 ~ 9 桁の 10 進数またはハイフンが続きます。
文字列がハイフンで終わらないようにしたい場合は、次のようにします:
^[+]?[0-9][0-9-]{1,8}[0-9]$
これは、オプションのプラス、10 進数、1 ~ 8 桁またはハイフン、10 進数と一致します。
これをすべての Unicode 数字に拡張することもできます (詳細については、この回答を参照してください)。
^\+?\d[\d-]{2,9}$
また
^\+?\d[\d-]{1,8}\d$
http://rubular.com/r/8eyAolNHlX
Rubyでは動作するはずです:
/\+?(?:\d\-?\d?)+/
もしかしてこれ?
^[+]?\d(-?\d){2,9}$