繁体   English   中英

JavaScript正则表达式替换一系列字符

[英]JavaScript regular expression to replace a sequence of chars

在这种特定情况下,我想用下划线替换字符串开头和结尾的所有空格:

var a = '   ## ## #  ';
console.log(myReplace(a)); // prints ___## ## #__

ie:第一个#之前的字符串开头的所有空格和最后一个#之后的所有空格,其他一切(包括字符串中间的空格)保持不变。

我最初的想法是使用两个Reg Exp,每个问题都有一个。

但是,我无法获得第一个,我不确定是否有可能使用JS regexp做我想做的事情。

str.replace(/^\ /g, '_'); // replaces only the first space
str.replace(/^\ +/, '_') //  replaces all the correct spaces with only one underscore

谢谢!

你必须使用回调函数:

var newStr = str.replace(/(^( +)|( +)$)/g, function(space) { 
                             return space.replace(/\s/g,"_");
                           }
                         );

尝试这个:

var result = str.replace(/^ +| +$/g,
             function (match) { return new Array(match.length+1).join('_'); });

这在JavaScript中很难。 使用ECMAScript 6,您可以使用/[ ]/y ,这将要求匹配相邻,因此您可以逐个匹配空格,但要确保不要超过第一个非空格。 对于字符串的结尾,您可以(在任何情况下)使用/[ ](?=[ ]*$)/

对于ECMAScript 5(可能与您更相关),最简单的方法是使用替换回调:

str = str.replace(
    /^[ ]+|[ ]+$/g,
    function(match) {
        return new Array(match.length + 1).join("_");
    }
);

这将以编程方式读取空格的数量并写回许多下划线。

我删除了这个答案,因为它显然没有回答JavaScript的问题。 我取消删除它,以便未来的搜索者可以找到一种在字符串末尾获得空格的方法。

这不能正确回答您的问题,但可能对其他人有用

此正则表达式将匹配字符串开头和结尾的所有空格:

^(\s*).*?(\s*)$

只需用下划线替换捕获组即可!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM