Saya mencoba membuat validator khusus dalam proyek angular 4 yang hanya akan memungkinkan karakter selain angka untuk diketik.

Sejauh ini saya telah mencoba beberapa opsi tetapi sepertinya tidak ada yang berhasil.

Saya melakukan sesuatu seperti ini:

Komponen

ngOnInit() {
  this.form = new FormGroup({
    ...
    city: new FormControl('', validateCity)
  });
}

Validator

import { FormControl } from '@angular/forms';

function validateCity(c: FormControl) {
  let CITY_REGEXP = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]/i;

  return CITY_REGEXP.test(c.value) ? null : {
    validateCity: {
      valid: false
    }
  };
}

Apakah saya melakukan sesuatu yang salah? Terima kasih

0
Bhushan Gadekar 10 Agustus 2017, 15:12

2 jawaban

Jawaban Terbaik

Karena Anda hanya memiliki regex, Anda bisa menggunakan validator pattern

city: new FormControl('',  Validators.pattern('[A-Za-z]'))
3
Kld 10 Agustus 2017, 12:16

Ekspresi reguler Anda salah:

let CITY = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]/i;
console.log(CITY.test('Hello9'))

Anda memerlukan regex yang hanya cocok dengan karakter dan spasi:

let re=/^[A-Za-z ]+$/

console.log (re.test('Barcelona')) //true
console.log(re.test('Los Angeles')) //true
console.log(re.test('Paris 9')) //false

Tapi mungkin Anda perlu mengizinkan aksen, umlauts ... sehingga Anda dapat memeriksa SO pertanyaan

1
Pablo Lozano 10 Agustus 2017, 12:32