let a = "`!@A#$%A^&*A    789^&*(+_)JH?></.,":';-";

Saya perlu menghapus semua karakter non-alfanum kecuali tanda hubung dan mengganti beberapa spasi dengan satu spasi.

Jadi hasilnya seharusnya - AAA 789JH-

Inilah percobaan saya - tanpa hasil:

a = a.replace("[^A-Za-z0-9 -]","");
a = a.replace(/\s\s+/g, ' ');
-1
qadenza 3 April 2019, 11:27

1 menjawab

Jawaban Terbaik

Anda dapat menggunakan

a.replace(/[^A-Za-z0-9 -]+/g,"").replace(/\s{2,}/g, ' ')

Regex /[^A-Za-z0-9 -]+/g akan mencocokkan beberapa kemunculan (g pengubah melakukannya) dari 1 atau lebih (lihat + quantifier) ​​karakter selain huruf, angka, spasi atau/dan tanda hubung.

Jika Anda perlu mencocokkan spasi putih apa pun, ganti spasi dengan \s.

Perhatikan bahwa \s\s+ sama dengan \s{2,} di mana {2,} adalah kuantifikasi pembatas yang cocok dengan 2 atau lebih kemunculan pola terkuantifikasi.

Lihat demo JS:

let a = "`!@A#$%A^&*A    789^&*(+_)JH?></.,\":';-";
console.log(a.replace(/[^A-Za-z0-9 -]+/g,"").replace(/\s{2,}/g, ' '));
1
Wiktor Stribiżew 3 April 2019, 08:53