Regex - не містить певних символів


274

Мені потрібен регулярний вираз, якщо ніде в реченні НЕ є ні <, ні.

Якщо або <або> є в рядку, він повинен повернути помилкове.

Я мав частковий успіх у цьому, але лише в тому випадку, якщо мої <> на початку чи в кінці:

(?!<|>).*$

Я використовую .Net, якщо це має значення.

Дякую за допомогу.

Відповіді:


436
^[^<>]+$

Карета в класі символів ( [^) означає відповідати будь-чому, але, це означає, початок рядка, потім одне або більше всього, крім <і >, потім кінець рядка.


3
Що означає перша карета? Чи це означатиме б не те, що не містить цих символів ... значить, це означає лише рядки, які містять ці символи?
RobKohr

11
Перша каретка означає, початок струни. Долар означає, кінець рядка.
Нед Батчелдер

2
@PhilipRego Будьте обережні зі спеціальними символами: оболонка інтерпретує деякі з них. Подивіться, чи тепер у вашому каталозі є файл з назвою '] + $'. Помістіть цілий регулярний вираз у окремі лапки, щоб він працював.
Нед Батчелдер

Чудова відповідь! Чи можете ви додати пояснення, чому існує +перша і перша карета?
Dr_Zaszuś

1
@ Dr_Zaszuś "+" означає "один або більше", а "^" означає "початок рядка".
Нед Батчелдер

59

Ось вам:

^[^<>]*$

Це дозволить перевірити рядок, який не має <і не має>

Якщо ви хочете перевірити на рядок , яка може мати <і >, а й повинні мати що - то інше , ви повинні використовувати тільки

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

Де [<>]означає будь-який <або> і [^<>]означає будь-який, що не є <або> .

І звичайно обов'язкове посилання .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.