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

sus*_*ani 21 javascript regex trim

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

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

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

Tat*_*nen 36

/^\s+|\s+$/g从字符串的开头或结尾搜索空格.表达可被分成两个部分,^\s+并且\s+$它们通过分离|(OR).第一部分从string(^)的开头开始,包含尽可能多的空白字符(\s+).第二部分使用美元符号($)反向进行,最后使用美元符号().

用简单的英语,正则表达式将如下所示:

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

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

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

  • @sushil,这里的全局标志意味着可以有多个替换.没有它,它只会取代第一场比赛.例如.``foo".replace(/ ^\s + |\s + $ /,"")`(没有全局)是``foo"` (5认同)

Mat*_*hen 6

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

你可能对这篇博文感兴趣,它比你可能需要的更详细地分析:)各种修剪功能的优点和缺点.

  • @Andy,谢谢,我实际上已经意识到这一点,但没有说得好.我并不是说它只是ASCII 0x20(实际空间).我澄清了; 它实际上比你说的多几个字符. (2认同)