修剪javascript?这段代码在做什么?

时间:2010-08-02 11:03:30

标签: javascript regex trim

我在JavaScript中寻找一个不存在的修剪函数,Googling上的一些代码建议使用:

function trimStr(str) {
  return str.replace(/^\s+|\s+$/g, '');
}

我想知道如何str.replace(/^\s+|\s+$/g, '')  作品。我知道这是某种形式的正则表达,但不知道它在做什么。

2 个答案:

答案 0 :(得分:36)

/^\s+|\s+$/g从字符串的开头或结尾搜索空格。表达式可以分为两部分,^\s+\s+$,由|(OR)分隔。第一部分从字符串(^)的开头开始,包含尽可能多的空白字符(\s+)。第二部分使用美元符号($)进行相反但反过来的结尾。

用简单的英语,正则表达式会是这样的:

  

尽可能从字符串的开头找到尽可能多的空白字符,或尽可能多地找到空白字符。

请注意\s匹配空格,制表符和换行符。

最后的/g部分启用全局搜索,允许多次替换(例如,不仅仅是开头,而是字符串的结尾)。

答案 1 :(得分:6)

^是字符串的开头,$是结尾。 \s表示空白字符(在JavaScript中专门表示制表符,垂直制表符,换页符,空格,非中断空格,字节顺序标记,Unicode空格分隔符(类别Z)),换行符,回车符,行分隔符,或段落分隔符),+表示1或更多。 |是交替,是两种可能性之间的选择。 g是全球旗帜。所以正则表达式意味着开头,然后是一个或多个空格,或者一个或多个空格,然后是结尾。然后,我们用空字符串替换所有匹配(因为它是全局的)。

你可能对这个blog post感兴趣,它比你可能需要更详细地分析:)各种修剪功能的优点和缺点。