Sisanya baik memeriksa ruang tetapi tidak spasi atau memiliki negasi di tempat yang salah untuk benar-benar meniadakan.
Zachary Scott
\ w menangkap garis bawah juga - yang merupakan karakter non-alfanumerik
Tudor Constantin
Aha! Saya akan memodifikasi - saya tidak tahu itu. Saya berharap ini bekerja secara berbeda untuk mesin yang berbeda, tetapi mungkin juga memberikan OP jawaban yang aman.
Luke Sneeringer
2
Diturunkan karena ini tidak akan menangkap karakter non-Latin, atau karakter Latin "khusus".
Damian
16
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 mengikuti
a-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\ddengan \w, yang cocok dengan huruf, angka, dan garis bawah.
Rentang ini berisi beberapa karakter yang bukan alfanumerik (U + 00D7 dan U + 00F7), dan mengecualikan banyak karakter beraksen yang valid dari bahasa non-Barat seperti Polandia, Ceko, Vietnam dll.
tripleee
1
Terpilih untuk deskripsi setiap bagian dari RegEx.
Diturunkan karena ini tidak akan menangkap karakter non-Latin, atau karakter Latin "khusus".
Damian
14
Mudah untuk memilih jawaban, dan lebih sulit lagi untuk memberikan informasi yang konstruktif kepada dewan, misalnya bagaimana seseorang kemudian menangkap karakter non-Latin, atau karakter Latin "khusus"? Pada hitungan saya ke sini Anda telah memilih 3 jawaban untuk alasan yang sama, dan menurut pendapat saya untuk tweak yang agak kecil. Sebagai contoh, saya di sini untuk menemukan regex untuk apa yang dibahas dalam jawaban ini. Saya tidak peduli dengan set karakter yang tidak akan digunakan dalam aplikasi saya. Hukum pengembalian yang semakin berkurang.
Harun mungkin menjadi "minor tweak" untuk warga negara AS, tetapi sangat relevan untuk ... seluruh planet ini.
Ini adalah satu-satunya jawaban di sini yang berurusan dengan benar dengan alfabet beraksen Unicode dengan cara yang tepat. Sayangnya, tidak semua mesin regex mendukung fasilitas ini (bahkan Python tidak memilikinya, mulai 3,8, meskipun mesin regexnya berbasiskan PCRE).
tripleee
1
Saya akan menghapus Python dari jawabannya, saya pikir saya mengujinya tetapi ternyata tidak. Terima kasih telah menunjukkannya.
Ini tampaknya mengulangi jawaban yang diterima dari 2011. The ^dan $jangkar membatasi untuk mencocokkan seluruh garis dan *kuantifier berarti juga cocok dengan garis kosong.
tripleee
0
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\:]*/
Jawaban:
sumber
\d
dan\s
ekstensi Perl yang biasanya tidak didukung oleh alat-alat yang lebih tua sepertigrep
,sed
,tr
,lex
, dllIni harus dilakukan:
sumber
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:
^
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.sumber
Coba ini:
Contoh JavaScript:
Lihat contoh online:
http://jsfiddle.net/vhMy8/
sumber
Tidak ada alfanumerik, spasi putih atau '_'.
sumber
Jika Anda bermaksud "karakter non-alfanumerik", coba gunakan ini:
sumber
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
sumber
Coba tambahkan ini:
Ini bekerja untuk saya ... :)
sumber
^
dan$
jangkar membatasi untuk mencocokkan seluruh garis dan*
kuantifier berarti juga cocok dengan garis kosong.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;
sumber