2017-01-16 4 views
0

私は米国の電話番号の形式で働いている:私も私の好みに合わせて電話番号をフォーマットパイプを持っている角度2パターンバリデータレポートの不正な不正なレポート...?

let phoneRegEx = '^\([1-9]{3}\)\s{1}[0-9]{3}-[0-9]{4}$'; 

class PhoneFormComponent { 

    ... 

    buildForm(): void { 
     this.form = this.formBuilder.group({ 
      number: [ 
      this.phone ? this.phoneNumberPipe.transform(this.phone.number) : '', [ 
       Validators.required, 
       Validators.pattern(phoneRegEx), 
      ] 
      ] 
     }); 
    } 
} 

@Pipe({name: 'phoneNumber'}) 
export class PhoneNumberPipe implements PipeTransform { 
    transform(value: string): string { 
    if (!value) return value; 

    let areaCode = value.substring(0, 3); 
    let prefix = value.substring(3, 6); 
    let number = value.substring(6); 

    return `(${areaCode}) ${prefix}-${number}`; 
    } 
} 

電話番号番号は文字列として保存されています私はアクセスする必要があるAPIにスペースや書式を使用しないため、フォームを作成して同じパターンを入力に一致させるときに、サービスによって提供される電話番号をパイプで処理します。値をAPIに戻すときにフォーマットを取り除きます。

regex101.comによれば、私の正規表現は期待どおりに動作しているはずです:https://regex101.com/r/9TRysJ/1 (111)111-1111 は有効なである必要があります。

ただし、私の角度形式では常に、電話フィールドの値が無効であることが報告されます。私は間違って何をしていますか?

+0

を'' phoneRegEx = '^ \\([1-9] {3} \\)\\ s [0-9] {3} - [0-9] {4} $'; ' '^'と '$'はデフォルトで追加されるので省略することができます。 –

+1

興味深い。私は開始文字と終了文字について知らなかった。正規表現への調整は、期待通りに機能します。ありがとうございました! – Brandon

答えて

0

私は

角度を知らないが、それはREGEXPが機能しなければなりません。

\((\d{3})\)\s(\d{3})\-(\d{4}) 

結果:

Full match 0-14 `(123) 456-7890` 
Group 1. 1-4 `123` 
Group 2. 6-9 `456` 
Group 3. 10-14 `7890` 

私は基本的にグループに各値を分離しています。

次にuは

($1) $2-$3 

説明使用することができます。

$1 = 123 
$2 = 456 
$3 = 7890 

注: $ = 0>完全一致(123)456-7890あなたが使用すること