Regex - Tidak mengandung Karakter tertentu


274

Saya perlu regex untuk mencocokkan jika di mana saja dalam kalimat TIDAK ada <atau>.

Jika <atau> ada di string maka itu harus mengembalikan false

Saya memiliki sebagian keberhasilan dengan ini tetapi hanya jika <saya berada di awal atau akhir:

(?!<|>).*$

Saya menggunakan .Net jika itu membuat perbedaan.

Terima kasih untuk bantuannya.

Jawaban:


436
^[^<>]+$

Tanda sisipan di kelas karakter ( [^) berarti cocok dengan apa pun tetapi, jadi ini berarti, awal string, lalu satu atau lebih dari apa pun kecuali <dan >, kemudian akhir string.


3
Apa arti tanda kuret pertama? Apakah ini berarti tidak ada sesuatu yang tidak mengandung karakter-karakter itu ... dengan demikian berarti hanya string yang mengandung karakter-karakter itu?
RobKohr

11
Tanda sisir pertama berarti, awal dari string. Dolar berarti, akhir dari string.
Ned Batchelder

2
@ PhilipRego Hati-hati dengan karakter khusus: shell menafsirkan beberapa dari mereka. Lihat untuk melihat apakah Anda sekarang memiliki file bernama '] + $' di direktori Anda. Masukkan seluruh regex ke dalam tanda kutip tunggal untuk membuatnya bekerja.
Ned Batchelder

Jawaban bagus! Bisakah Anda menambahkan penjelasan mengapa ada +dan tanda sisipan pertama?
Dr_Zaszuś

1
@ Dr_Zaszuś "+" berarti "satu atau lebih", dan "^" berarti "awal dari string".
Ned Batchelder

59

Ini dia:

^[^<>]*$

Ini akan menguji string yang tidak <dan tidak>

Jika Anda ingin menguji untuk string yang mungkin <dan >, tetapi juga harus memiliki sesuatu yang lain, Anda harus menggunakan saja

[^<>] (or ^.*[^<>].*$)

Dimana [<>]artinya salah <atau> dan [^<>]berarti apa saja yang bukan dari <atau> .

Dan tentu saja tautan wajib .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.