Normal İfade - Belirli Karakterler içermiyor


274

Eğer bir cümle herhangi bir yerde <veya> DEĞİL maç için bir regex gerekir.

Dizede <veya> varsa, false döndürmesi gerekir.

Bununla kısmi bir başarı elde ettim ama sadece <> başımın başında veya sonundaysa:

(?!<|>).*$

Bir fark yaratırsa .Net kullanıyorum.

Yardım için teşekkürler.

Yanıtlar:


436
^[^<>]+$

Karakter sınıfında şapka ( [^), dizenin sonra bir veya daha fazla bir şey hariç başlayan bu araçlar maç bir anlamı ancak, bu yüzden <ve >, dizenin sonra ucunu.


3
İlk şapka ne anlama geliyor? Bu, bu karakterleri içermeyen herhangi bir şey anlamına gelmez ... yani yalnızca bu karakterleri içeren dizeler anlamına mı gelir?
— RobKohr

11
İlk şapka, ipin başlangıcı anlamına gelir. Dolar, dizenin sonu anlamına gelir.
— Ned Batchelder

2
@PhilipRego Özel karakterlere dikkat edin: kabuk bazılarını yorumlar. Dizininizde şimdi '] + $' adlı bir dosyanızın olup olmadığına bakın. Çalıştırmak için tüm normal ifadeyi tek tırnak içine alın.
— Ned Batchelder

Mükemmel cevap! Neden +ilk ve ilk düzeltme kodu olduğuna dair bir açıklama ekleyebilir misiniz ?
— Dr_Zaszuś

1
@ Dr_Zaszuś "+", "bir veya daha fazla" anlamına gelir ve "^", "dizenin başlangıcı" anlamına gelir.
— Ned Batchelder

59

Hadi bakalım:

^[^<>]*$

Bu, hayır <ve hayır olan dizeyi test eder>

Başka bir şeye sahip olabilecek <ve >aynı zamanda olması gereken bir dizeyi test etmek istiyorsanız,

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

Nerede [<>]araçlar herhangi <veya> ve [^<>]araçlarla ait olmadığını herhangi <veya> .

Ve tabii ki zorunlu bağlantı .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.