Можно ли построить регулярное выражение, которое отклоняет все входные строки?
Регулярное выражение, которое отклоняет все входные данные?
Ответ 1
Возможно, это:
[^\w\W]
\ w - символ слова (буква, цифра и т.д.)
\ W - напротив \w
[^\w\W] - должен всегда терпеть неудачу, потому что любой символ должен принадлежать одному из классов символов -\w или \W
Другие фрагменты:
$.^
$- утверждение позиции в конце строки
^ - утвердить позицию в начале строки
, - любой char
(?#it just a comment inside of empty regex)
Пустой взгляд/сзади должен работать:
(?<!)
Ответ 2
Наилучшие стандартные регулярные выражения (т.е. никакие обратные или обратные ссылки), которые отвергают все входы (после @aku выше)
.^
и
$.
Это плоские противоречия: "строка с символом перед ее началом" и "строка с символом после ее окончания".
ПРИМЕЧАНИЕ. Возможно, некоторые реализации регулярных выражений отклонят эти шаблоны как некорректные (довольно легко проверить, что ^
приходит в начале шаблона и $
в конце... с регулярным выражением), но те, которые я проверил, принимают их. Они также не будут работать в реализациях, которые позволяют ^
и $
соответствовать символам новой строки.
Ответ 3
(?=not)possible
? = является положительным взглядом. Они не поддерживаются во всех вариантах regexp, но во многих.
Выражение будет искать "не", а затем искать "возможно", начиная с той же позиции (так как lookaheads не перемещаются вперед в строке).
Ответ 4
Одним из примеров того, почему такая вещь может понадобиться, является то, что вы хотите отфильтровать некоторый ввод с помощью регулярных выражений, и вы передаете regex в качестве аргумента функции.
В духе функционального программирования для алгебраической полноты вам могут потребоваться некоторые тривиальные первичные регулярные выражения, такие как "все разрешено" и "ничего не разрешено".
Ответ 5
Зачем тебе это нужно? Разве не простая, если бы ставка на трюк? Что-то вроде:
if ( inputString != "" )
doSomething ()
Ответ 6
Мне кажется, что вы атакуете проблему не так, что именно вы пытаетесь решить?
Вы можете сделать регулярное выражение, которое ловит все и отрицает результат.
например, в javascript:
if (! str.match( /./ ))
но тогда вы могли бы просто сделать
if (!foo)
вместо этого, как сказал @[jan-hani].
Если вы хотите встроить такое регулярное выражение в другое регулярное выражение, вы возможно, ищет вместо $или ^ или использовать такие образы, как @[henrik-n].
Но, как я уже сказал, это выглядит как "Мне кажется, мне нужно x, но мне действительно нужна проблема".
Ответ 7
[^\x00-\XFF]
Ответ 8
Это зависит от того, что вы подразумеваете под "регулярным выражением". Вы имеете в виду регулярные выражения на определенном языке программирования или в библиотеке? В этом случае ответ, вероятно, да, и вы можете обратиться к любому из приведенных выше ответов.
Если вы имеете в виду регулярные выражения, которые преподаются в классах информатики, тогда ответ будет отрицательным. Каждое регулярное выражение соответствует некоторой строке. Это может быть пустая строка, но она всегда что-то соответствует.
В любом случае, я предлагаю вам отредактировать заголовок вашего вопроса, чтобы сузить, какие типы регулярных выражений вы имеете в виду.
Ответ 9
[^]+
должен это сделать.
В ответ на прилагаемый к нему комментарий aku я тестировал его с помощью онлайн-тестера регулярных выражений (http://www.regextester.com/), и поэтому предположим, что это работает с JavaScript. Я должен признаться, что не тестировал его в "реальном" коде.;)
Ответ 10
EDIT: [^\П\г\ш\с]
Ответ 11
Ну,
Я не уверен, понял ли я, поскольку я всегда думал о регулярном выражении способа сопоставления строк. Я бы сказал, что лучший снимок, который у вас есть, не использует регулярное выражение.
Но вы также можете использовать regexp, который соответствует пустым строкам типа ^$
или регулярному выражению, которые не соответствуют словам/пробелам, например [^\w\s]
...
Надеюсь, что это поможет!