#jquery #regex
#jquery #регулярное выражение
Вопрос:
Как я могу удалить все из $(this).text()
приведенного ниже фрагмента, который появляется после двух (или более) пробелов в строке, включая эти пробелы?
$(this).find('td.export').each(function() {
if($(this).is(':visible')) {
html = '<td>' $(this).text() '</td>';
}
});
Пример:If $(this).text()
= « text1 text2
» тогда мне понадобится только текст1.
Примечание: я ищу только два или более пробела в строке, поэтому, если есть только один пробел, удалять ничего не нужно.
Ответ №1:
theString.replace(/ {2,}.*/gm, '');
Или, если вы хотите игнорировать пробелы в начале строки:
theString.replace(/(S) {2,}.*/gm, '$1');
тестовый пример:
var theString =
'Hello world there are 2 spacesn
another row with more spacesn
yet another row whith spaces at the begin of the line';
var result = theString.replace(/ {2,}.*/gm, '');
var result2 = theString.replace(/(S) {2,}.*/gm, '$1');
alert(result);
alert(result2);
Комментарии:
1. Спасибо за это! Объединение этого с $.trim работает идеально, и это все, что мне здесь нужно. 🙂
2. Если вы хотите обнаружить другие пробелы, а не только пробелы, созданные пробелом, используйте
s
вместо простого символа пробела. Вы можете обрезать результат также без дополнительного вызова функции следующим выражением:theString.replace(/^s*(S.*?)(?:s{2,}.*|$)/gm, '$1');
3. Запятая в
{2,}
этом специальном случае не требуется, поскольку следующая точка также соответствует символу пробела.{2,}
семантически корректно сопоставлять «два или более» предыдущего символа (или подвыражения).{2}
означает точные два вхождения, которые также можно просто отметить как два пустых пробела илиss
.
Ответ №2:
РЕДАКТИРОВАТЬ: OP отредактировал требования. Мы больше не оставляем первую группу пробелов символов и удаляем вторую группу пробелов символов, мы просто удаляем два пробела символы. Итак, задача совершенно иная. Оставляем оригинал, потому что он в любом случае интересен.
Оригинал: оставляя первый блок «пробел символы», удаляя все из первого пробела после этого блока.
Использование лямбда-функции при замене
Поиск: ^( S )[ ]{2}.*
В функции replace замените на Group 1 .
^
утверждает, что мы находимся в начале строки( S )
соответствует первому пробелу, за которым следуют первые символы, не содержащие пробелов, и записывается в группу 1[ ]{2}.*
соответствует второму пробелу и всему до конца строки
Вот протестированный код (см. Демонстрацию)
<script>
var subject = ' text1 text2';
var regex = /^( S )[ ]{2}.*/;
replaced = subject.replace(regex, function(m, group1) {
return group1;
});
document.write("<br>*** Replacements ***<br>");
document.write(replaced);
</script>
Комментарии:
1. Спасибо за это! Это выглядит великолепно, но я соглашусь с вышесказанным, поскольку это все, что мне здесь нужно.