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.