matches()
вернет true только в том случае, если полная строка соответствует. find()
попытается найти следующее вхождение в подстроке, которое соответствует регулярному выражению. Обратите внимание на акцент на «следующий». Это означает, что результат вызова find()
несколько раз может быть не таким. Кроме того, с помощью find()
вы можете вызвать start()
, чтобы вернуть позицию, подстроенную подстрокой.
final Matcher subMatcher = Pattern.compile("\\d+").matcher("skrf35kesruytfkwu4ty7sdfs");
System.out.println("Found: " + subMatcher.matches());
System.out.println("Found: " + subMatcher.find() + " - position " + subMatcher.start());
System.out.println("Found: " + subMatcher.find() + " - position " + subMatcher.start());
System.out.println("Found: " + subMatcher.find() + " - position " + subMatcher.start());
System.out.println("Found: " + subMatcher.find());
System.out.println("Found: " + subMatcher.find());
System.out.println("Matched: " + subMatcher.matches());
System.out.println("-----------");
final Matcher fullMatcher = Pattern.compile("^\\w+$").matcher("skrf35kesruytfkwu4ty7sdfs");
System.out.println("Found: " + fullMatcher.find() + " - position " + fullMatcher.start());
System.out.println("Found: " + fullMatcher.find());
System.out.println("Found: " + fullMatcher.find());
System.out.println("Matched: " + fullMatcher.matches());
System.out.println("Matched: " + fullMatcher.matches());
System.out.println("Matched: " + fullMatcher.matches());
System.out.println("Matched: " + fullMatcher.matches());
Будет выводиться:
Found: false Found: true - position 4 Found: true - position 17 Found: true - position 20 Found: false Found: false Matched: false ----------- Found: true - position 0 Found: false Found: false Matched: true Matched: true Matched: true Matched: true
Итак, будьте осторожны при многократном вызове find()
, если объект Matcher
не был сброшен, даже когда регулярное выражение окружено с ^
и $
, чтобы соответствовать полной строке.
Примените ширину к td
, не table
.
Править: @Emmett - ширина могла так же, как легко быть применена с помощью CSS.
td {
width: 300px;
}
приводит к желаемому результату. Или при использовании jQuery Вы могли бы добавить ширину через сценарий:
$('textarea[width=100%]').parent('td').css('width', '300px');
Точка быть, существует больше чем один способ применить ширину к ячейке таблицы, если ограничения разработки препятствуют тому, чтобы Вы применили его непосредственно.
Я попробовал различные водосливные значения, напрасно.
Экспериментирование с различными значениями для атрибута переноса и стиля перехода на новую строку также не было плодотворно.
Править:
Из-за некоторых неловких специализированных ограничений, ширина может только быть применена к таблице.
Установка стиля = "word-break:break-all"; вид обработанных! Это все еще переносится по-другому в IE7 и И следующие. Я приму этот ответ, если ничто лучше не подойдет.
Другая hacky опция, но единственная опция, которая работает на меня - ни одно из других предложений на этой странице, делает - должен перенести текстовую область в таблицу отдельной ячейки с фиксированной сервировкой.
<table style="width:100%;table-layout:fixed"><tr><td>
<textarea style="width:100%">longstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstring</textarea>
</td></tr></table>
Вы пробовали...
overflow: hidden;
??
Я не уверен, должно ли это быть в таблице текстовой области... экспериментируют немного
Другой очень hacky опция, если Вы застреваете с большим количеством ограничений, но знаете то, на что будет похоже окружение dom:
style="width:100%;width:expression(this.parentNode.parentNode.parentNode.parentNode.width +'px')"
не симпатичный, но действительно работает в IE7.
Используя jQuery или подобный было бы намного более опрятное решение, но он зависит от других ограничений, которые Вы имеете.
Водосливное свойство является способом пойти. В частности, если Вы хотите, чтобы дополнительный текст был проигнорирован, можно использовать "overflow:hidden" в качестве свойства CSS на тексте.
В целом, когда браузер имеет небьющийся объект, такой как длинная строка без пробелов, он может иметь конфликт между ограничениями различного размера - те из строки (долго) по сравнению с ее (коротким) контейнером. Если Вы видите другое поведение в различных браузерах, они просто разрешают этот конфликт по-другому.
Между прочим, существует хороший прием, доступный для длинных строк - <wbr> тег. Если Ваш браузер будет видеть longstringlongstring, то он попытается приспособить его в контейнере как единственная, неповрежденная строка - но если он не может соответствовать, он повредит ту строку в половине в wbr. Это - в основном точка останова с неявным запросом для не повреждения там, если возможный (вид подобных дефис в печатаемых текстах). Между прочим, это - немного багги в некоторых версиях Safari, и Opera - проверяют эту quirksmode страницу для больше.
Лучшая вещь я мог найти, чтобы заставить его работать, немного hacky:
перенесите текстовую область с <div style="width:300px; overflow:auto;">
мог бы хотеть играть вокруг с водосливным значением
Я столкнулся с этой проблемой прежде. Это связано с тем, как HTML анализирует таблицу и ширины ячеек.
Вы - прекрасная установка 300 как ширина, пока содержание элемента никогда не может превышать это (установка отделения с определенной шириной внутри, и водосливное правило является моим любимым путем).
Но отсутствуйте решение как вышеупомянутое, минута, ЛЮБОЙ элемент продвигает Вас мимо той ширины, все ставки выключены. Элемент становится столь широким, как он имеет разместить содержание.
Дополнительная подсказка - монтирует в корпус Ваши значения ширины в любом наборе кавычек, вложит значение правильно (<table width='300'
). Если кто-то приедет и изменит его на %, то это проигнорирует %, иначе.
К сожалению, Вы всегда собираетесь испытать затруднения при повреждении строк, которые не имеют 'естественных' перерывов в IE, если Вы не можете сделать что-то для разбивания их с помощью кода.
или, как насчет:
overflow: scroll;
Править:
Я на самом деле протестировал это. Я думаю, что поведение - такой, потому что ширина находится на таблице, которой я верю (у меня нет ничего для резервного копирования этого), я считал давно, что таблица width является предложенной шириной, но может быть расширена для размещения ее содержания.Не уверен. Я знаю, используете ли Вы a <DIV>
вместо таблицы, это работает. Кроме того, если Вы применяете 300 пикселей шириной к содержанию <TD>
элемент в противоположность <TABLE>
элемент, это работает также. Кроме того, overflow: scroll
ничего не делает!:P
Хорошее, броское поведение IE, наверняка!