Возможно ли построить регулярное выражение, которое отклоняет все входные строки?Регулярное выражение, которое отклоняет все входные данные?
ответ
Вероятно, это:
[^\w\W]
\ ш - слово символа (буквы, цифры и т.д.)
\ W - противоположность \ ш
[^ \ w \ W] - должен всегда терпеть неудачу, потому что любой символ должен принадлежать одному из классов символов - \ w или \ W
Другие фрагменты:
$.^
$ - утверждать положение в конце строки
^ - утверждать положение в начале линии
. - любой символ
(?#it's just a comment inside of empty regex)
Пустое опережение/за должно работать:
(?<!)
Как насчет пустой строки? – 2008-09-15 13:03:21
EDIT: [^ \ п \ г \ ш \ s]
Не было бы принято принимать все входные данные строки? Я думаю, вы можете отказаться от этого утверждения. – 2008-09-15 12:44:45
Это полная противоположность тому, что я ищу. В вашем регулярном выражении все, что мне нужно, - это регулярное выражение, которое отвергает все. – Kasper 2008-09-15 12:45:37
Unkwntech, ваше регулярное выражение будет соответствовать символам пунктуации и т. Д. – aku 2008-09-15 12:53:59
Почему вы даже хотите этого? Разве не простая, если бы ставка на трюк? Что-то вдоль линий:
if (inputString != "")
doSomething()
[^ \ x00- \ XFF]
Ну,
Я не уверен, если я понял, так как я всегда думал о регулярном выражении способа сопоставления строк. Я бы сказал, что лучший выстрел у вас не используется с регулярным выражением.
Но, вы можете также использовать регулярное выражение, которое соответствует пустым строкам, как ^$
или регулярное выражение, которые не соответствуют словам/пробелов как [^\w\s]
...
Надеется, что это помогает!
(?=not)possible
? = Является положительным взглядом. Они не поддерживаются во всех вариантах регулярных выражений, но во многих.
Выражение будет искать «нет», а затем искать «возможный», начинающийся с той же позиции (так как lookaheads не перемещаются вперед в строке).
Для меня это звучит так, будто вы нападали на проблему неправильным образом, что именно вы пытаетесь решить?
Вы можете сделать регулярное выражение, которое ловит все и отрицает результат.
в JavaScript например:
if (! str.match(/./))
, но тогда вы можете просто сделать
if (!foo)
вместо, а @ [январь-Хани] сказал.
Если вы хотите, чтобы встроить такое регулярное выражение в другой регулярное выражение, вы могли бы искать $ или ^ вместо этого, или использовать lookaheads как @ [Хенрик-н] упомянул.
Но, как я уже сказал, это выглядит как «Мне кажется, мне нужна x, но мне действительно нужна проблема».
Это зависит от того, что вы подразумеваете под «регулярным выражением». Вы имеете в виду регулярные выражения на определенном языке программирования или в библиотеке? В этом случае ответ, вероятно, да, и вы можете обратиться к любому из приведенных выше ответов.
Если вы имеете в виду регулярные выражения, которые преподаются в классах информатики, тогда ответ будет отрицательным. Каждое регулярное выражение соответствует некоторой строке. Это может быть пустая строка, но она всегда соответствует что-то.
В любом случае, я предлагаю вам изменить название вашего вопроса, чтобы сузить, какие типы регулярных выражений вы имеете в виду.
Одним из примеров того, почему такая необходимость может потребоваться, является то, что вы хотите отфильтровать некоторый ввод с помощью регулярных выражений, и вы передаете регулярное выражение в качестве аргумента функции.
В духе функционального программирования для алгебраической полноты вам могут потребоваться некоторые тривиальные первичные регулярные выражения, такие как «все разрешено» и «ничего не разрешено».
[^]+
должен это сделать.
В ответ на комментарий к aku, прилагаемый к этому, я протестировал его с помощью онлайн-тестера регулярных выражений (http://www.regextester.com/), и поэтому предположим, что он работает с JavaScript. Я должен признаться, что не тестировал его в «реальном» коде. ;)
В лучше стандартные regexs (т.е. без опережения или резервные ссылки), которые отвергают все входы не (после @aku выше)
.^
и
$.
Это плоские противоречия: «строка с символом перед ее началом» и «строка с символом после ее окончания».
ПРИМЕЧАНИЕ: Возможно, что некоторые регулярные выражения реализации отвергнет эти модели как плохо сформированным (это довольно легко проверить, что ^
приходит в начале узора и $
в конце ... с регулярным выражением), но те, которые я проверил, принимают их. Они также не будут работать в реализациях, которые позволят ^
и $
соответствовать символам новой строки.
Зачем вам нужно `regex` здесь, вы можете подумать о некоторых других вариантах, таких как` readonly input`, if (input.length <0) ..., if (! Value) – 2014-10-29 12:19:32