如何在连续两个或多个空格后从字符串中删除所有内容

时间:2014-06-17 08:05:54

标签: jquery regex

如何从一行中两个(或多个)空格后出现的代码段中的$(this).text()中删除所有内容,包括这些空格?

$(this).find('td.export').each(function() {
    if($(this).is(':visible')) {
        html += '<td>' + $(this).text() + '</td>';
    }
});

示例:如果$(this).text() =“text1 text2”那么我只需要text1。

注意:我只在一行中查找两个或更多空格,因此如果只有一个空格,则不应删除任何内容。

非常感谢你提供任何帮助,蒂姆。

2 个答案:

答案 0 :(得分:1)

编辑: OP已编辑了要求。我们不再离开第一个空格+字符组并删除第二个空格+字符组,我们只删除两个空格+字符。所以任务完全不同。离开原版,因为它无论如何都很有趣。

原文:离开第一个&#34;空格+字符&#34;阻止,从该块之后的第一个空格中删除所有内容。

在替换

中使用lambda函数

搜索:^( \S+)[ ]{2}.*

在替换功能中,替换为组1。

  • ^声称我们位于字符串的开头
  • ( \S+)匹配第一个空格,后跟第一个非空格字符并捕获到第1组
  • [ ]{2}.*匹配第二个空格,一直到字符串结尾

以下是经过测试的代码(请参阅demo

<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 :(得分:1)

theString.replace(/ {2,}.*/gm, '');

或者如果你想忽略一行开头的空格:

theString.replace(/(\S) {2,}.*/gm, '$1');

测试用例:

var theString =
'Hello world  there are 2 spaces\n\
another row       with more     spaces\n\
      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);