Из того, что я могу сказать, тег по умолчанию является единственным
inline-block
. Чтобы быть в безопасности, я бы порекомендовал класс, вы никогда не знаете, когда меняются все элементы определенного типа, чтобы укусить вас. Или вы всегда можете создать свой собственный тег и назначить ему display:inline-block;
. Таким образом, вы не меняете стандартные функции стандартных элементов ...
EDIT
Также появляется button
, textarea
, input
и select
inline-block
Источники:
В соответствии с этим img
есть inline-block
http://dev.w3.org/html5/markup/ img.html # img-display
И здесь утверждается, что button
, textarea
и т. д. также: http://www.w3.org/TR /CSS2/sample.html
EDIT # 2
Хотя источник выше утверждает, что img
теги inline-block
кажется (благодаря Alohci), что они являются только inline
http://jsfiddle.net/AQ2yp/
В Firefox были протестированы следующие:
button
есть inline-block
: http://jsfiddle.net/GLS4P/
textarea
is inline
: http://jsfiddle.net/235vc/
input
is inline
: http://jsfiddle.net/RFKe8/
select
is inline-block
: http://jsfiddle.net/5B4Gs/
Вот как ваше регулярное выражение соответствует no and little risk
:
Одна из ветвей вашего регулярного выражения - ...|(?<!\bno)(?<!low).+risk
.
Механизм регулярных выражений запускается попыткой сопоставления в каждой позиции в целевой строке, начиная с начала:
no and little risk
^
Первое ограничение заключается в том, что текущей позиции не может предшествовать граница слова, за которой следует «нет» (из-за (?<!\bno)
). Это условие выполняется: началу строки назначения ничего не предшествует.
Вторым ограничением является то, что текущей позиции не может предшествовать «низкий» (из-за (?<!low)
). Это условие также выполняется (см. Выше).
Затем мы сопоставляем один или несколько не-новых символов, но как можно больше из них (это часть .+
). Здесь мы первоначально потребляем всю строку:
no and little risk
------------------^
Но затем регулярное выражение требует совпадения risk
, что не удается (в целевой строке больше не осталось символов). Это заставляет .+
возвращаться назад и потреблять все меньше и меньше символов, пока это не произойдет:
no and little risk
--------------^
На этом этапе risk
успешно совпадает, и регулярное выражение заканчивается.
Основная проблема в том, что вы хотите сделать, это (?<!\bno.+)(?<!low.+)risk
, но то, что вы написали, это (?<!\bno)(?<!low).+risk
. Это две совершенно разные вещи!
Первая означает «соответствовать« риску », но только если ей не предшествуют« нет »или« низкий уровень »где-либо в строке (до 1 символа до« риска ») ». Последнее означает «соответствовать любой непустой подстроке, за которой следует« риск », если ей не предшествует ни« нет », ни« низкий »». Это дает механизму регулярных выражений свободу поиска любой подходящей позиции в строке, если ей не предшествует сразу «нет» или «низкий уровень» и где-то следует «. + Риск».
К сожалению, (?<!\bno.+)
не является допустимым регулярным выражением, потому что контрольные утверждения должны иметь фиксированную длину.
Один из возможных обходных путей - сделать следующее:
^(?!.*(?:\bno|low).+risk).*risk
Это говорит: начиная с начала строки, сначала убедитесь, что нет «нет» или «низкий», а затем «риск» в любом месте, затем сопоставьте «риск» в любом месте строки.
Это не совсем эквивалентно (гипотетической) версии с изменяющейся шириной, потому что она соответствовала бы
risk no risk
^^^^
из-за присутствия «риска» без «нет», предшествующего ему. тогда как этот обходной путь сначала находит
risk no risk
^^^^^^^
и немедленно отклоняет всю строку.