Как удалить все из строки после двух или более пробелов в строке

#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. Спасибо за это! Это выглядит великолепно, но я соглашусь с вышесказанным, поскольку это все, что мне здесь нужно.