7

ユーザーは電話番号を入力できます。(数字とダッシュのみ、ダッシュは必須ではありません)

彼は (中央の) ダッシュ ( -) をいくつでも持つことができますが、桁数の合計は10 でなければなりません。

私は"-"数字での正の先読みを使用して正規表現を書く

^(?=.*\-)[0-9\-]+$

しかし、私はそれに2つの問題があります:

  • ダッシュ(私の正規表現)は最初と最後にもある可能性があり、それは無効です

  • 10 桁の制限を適用できませんでした。

ps有効な例の例:

050-6783828 050-678-38-28 0506783828

無効:

-0506783826 0506783826- 050678--3826

ps2 この質問は正規表現としてタグ付けされていることに注意してください。私はjs(非正規表現)ソリューションを探していません。

4

2 に答える 2

2
^[0-9](-?[0-9]){8}-?[0-9]$

開始と終了の数字、オプションのダッシュと数字の 8 つのグループ、および最後の数字の前のオプションのダッシュ

隣り合う数字の間にダッシュを 1 つだけ使用できます。

var pat = new RegExp('^[0-9](-?[0-9]){8}-?[0-9]$')
// correct
console.log(pat.test('0506783828'))
console.log(pat.test('0-5-0-6-7-8-3-8-2-8'))
// incorrect
console.log(pat.test('0506783828-'))
console.log(pat.test('-0506783828'))
console.log(pat.test('05--06783828'))
于 2013-07-04T11:17:31.483 に答える