Jawaban:
[^a-zA-Z\d\s:]
\d
dan \s
ekstensi Perl yang biasanya tidak didukung oleh alat-alat yang lebih tua seperti grep
, sed
, tr
, lex
, dll
Ini harus dilakukan:
[^a-zA-Z\d\s:]
Jika Anda ingin memperlakukan karakter latin beraksen (mis. À Ñ) sebagai huruf normal (mis. Hindari mencocokkannya juga), Anda juga harus menyertakan kisaran Unicode yang sesuai ( \ u00C0- \ u00FF ) di regex Anda, jadi akan terlihat seperti ini:
/[^a-zA-Z\d\s:\u00C0-\u00FF]/g
^
meniadakan apa yang mengikutia-zA-Z
cocok dengan huruf besar dan kecil\d
angka yang cocok\s
cocok dengan spasi putih (jika Anda hanya ingin mencocokkan spasi, gantilah dengan spasi):
cocok dengan titik dua\u00C0-\u00FF
cocok dengan kisaran Unicode untuk karakter latin beraksen.nb. Pencocokan rentang Unicode mungkin tidak berfungsi untuk semua mesin regex, tetapi yang di atas tentu berfungsi dalam Javascript (seperti yang terlihat dalam pena ini pada Codepen).
nb2. Jika Anda tidak peduli tentang pencocokan garis bawah, Anda bisa menggantinya a-zA-Z\d
dengan \w
, yang cocok dengan huruf, angka, dan garis bawah.
Coba ini:
[^a-zA-Z0-9 :]
Contoh JavaScript:
"!@#$%* ABC def:123".replace(/[^a-zA-Z0-9 :]/g, ".")
Lihat contoh online:
Tidak ada alfanumerik, spasi putih atau '_'.
var reg = /[^\w\s)]|[_]/g;
Regex ini berfungsi untuk C # , PCRE , dan Go beberapa nama.
Itu tidak berfungsi untuk JavaScript di Chrome dari apa yang dilakukan RegexBuddy dikatakan . Tapi sudah ada contoh untuk itu di sini.
Bagian utama dari ini adalah:
\p{L}
yang mewakili \p{L}
atau \p{Letter}
jenis surat apa pun dari bahasa apa pun.`
Regex lengkap itu sendiri: [^\w\d\s:\p{L}]
Contoh: https://regex101.com/r/K59PrA/2
Dalam JavaScript:
/[^\w_]/g
^
negasi, yaitu memilih apa pun yang tidak di set berikut
\w
karakter kata apa saja (yaitu karakter alfanumerik apa pun, plus garis bawah)
_
meniadakan garis bawah, karena dianggap sebagai karakter 'kata'
Contoh penggunaan - const nonAlphaNumericChars = /[^\w_]/g;
/[^a-zA-Z0-9\s\:]*/