電話番号を正規表現と一致させようとしています。
this.Formareamedia.get('ladacontacto').valueChanges.subscribe((lada) => {
let p;
if (lada.length == 5) {
p = '\\d{3}.\\d{4}';
} else {
p = '\\d{4}.\\d{4}';
}
this.Formareamedia.get("telefonocontacto").setValidators(Validators.pattern(new RegExp(p)));
this.Formareamedia.get("telefonocontacto").updateValueAndValidity();
this.ladacontacto = lada;
let telefono = this.Formareamedia.get('telefonocontacto').value;
console.log(new RegExp(p).lastIndex);
if (telefono && telefono.match(new RegExp(p))) {
return null;
} else {
return {
telefono: false
}
}
});
ラーダ入力(XX)
とテレフォノ入力を入力XXXX-XXXX
すると、関数は返されますtrue
(正しい結果)が、ラーダ入力(XXX)
とテレフォノ入力を入力するXXXX-XXXX
とtrue
、間違った結果が返されることになりfalse
ます。私の機能の何が問題になっていますか?
次のようanchor
に、end of the string
に正規表現する必要があります。
if (lada.length == 5) {
p = '^\\d{3}.\\d{4}$';
} else {
p = '^\\d{4}.\\d{4}$';
}
それ以外の場合は、少なくとも指定した数と一致します(余分な数字は無視されます)。
同じことが文字列の先頭にも当てはまります: ' ^
'を指定します。
$
末尾に' 'を付けると、文字列が数字で終わるようになります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加