JavaScript中的(/^\s+|\s+$/gm)是什么意思?

18

我发现了这个 JavaScript 函数:

function myTrim(x) {
  return x.replace(/^\s+|\s+$/gm,'');
}

我知道这个函数(mytrim())会替换字符串(x)中的一些字符,但是在替换方法中/^\s+|\s+$/gm做了什么呢?

我可以在哪里学习更多关于这些内容的知识?

注意- 这个函数返回两侧去除空格后的字符串。


1
虽然JavaScript是一种语言,但它通常(但不仅限于)在Web浏览器的HTML DOM上下文中使用。这使得Web文档成为学习JavaScript的好地方。主要的Web浏览器供应商已经将他们的文档集中在了MDN Web Docs上。在这种情况下,关键字是“replace”和“RegExp”。 - Tom Blodget
@aryaman,你在这些答案中找到了合适的解决方案吗?如果没有,请告诉我们更多信息。否则,请选择最适合你的解决方案并接受它以关闭问题 - 请参阅当有人回答我的问题时我该怎么做? - ino
这个回答解决了你的问题吗?参考 - 这个正则表达式是什么意思? - Vega
4个回答

25
这是一个正则表达式搜索,匹配两个备选模式:
/^\\s+|\\s+$/gm
/ 为正则表达式分隔符
第一个备选模式 ^\\s+
^ 断言行首位置
\\s+ 匹配任何空白字符(等同于 [\r\n\t\f\v ])
+ 量词,匹配一次或多次,尽可能多地匹配,需要时回溯(贪婪)
第二个备选模式 \\s+$
\\s+ 匹配任何空白字符(等同于 [\r\n\t\f\v ])
+ 量词,匹配一次或多次,尽可能多地匹配,需要时回溯(贪婪) $ 断言行尾位置
全局模式标志
g 修饰符:全局。所有匹配项(不止第一个)。
m 修饰符:多行。使 ^ 和 $ 匹配每行的开头和结尾(而不仅是字符串的开头和结尾)。
你可以在 regex101.com 上了解更多细节。
函数解释
该函数调用return x.replace(/^\s+|\s+$/gm,'');搜索字符串开头和结尾的任何空格。 如果找到,则用空字符串''替换。 简单地说,它会修剪空格字符:
  • \n回车符(ASCII 13)
  • \r换行符(ASCII 10)
  • \t制表符(ASCII 9)
  • \f换页符(ASCII 12)
  • \v任何垂直空白字符

2

^\s+|\s+$gm

第一个选择 (^\s+)

^ 表示匹配行的开头位置

\s+ 匹配任意空白字符(等效于 [\r\n\t\f\v ])

+ 量词, 匹配一次或多次, 尽可能多的匹配(贪婪模式)

第二个选择 (\s+$)

\s+ 匹配任意空白字符(等效于 [\r\n\t\f\v ])

+ 量词, 匹配一次或多次, 尽可能多的匹配(贪婪模式)

$ 表示匹配行的结尾位置

全局模式标志:

g 修饰符: 全局匹配。找到所有匹配,而非在第一个匹配后停止。

m 修饰符: 多行匹配。使 ^ 和 $ 分别匹配行的开始和结束(而非字符串的开始和结束)。


2
这段文字的翻译如下:
这种语法被称为正则表达式(通常缩写为RegEx);有多个地方可以学习它,例如这个
还有多个网站可以测试这样的正则表达式,例如regex101.com。请注意,正则表达式不是普遍标准;根据编程语言和平台(例如grep、扩展grep、Perl、Java等),会有不同的变体。

2

这是一个正则表达式。

这个模式会将所有的空白字符\s+替换为空字符串,取决于它是否在字符串开头^\s+或者在字符串结尾\s+$之前。

g代表全局匹配,不止返回第一个匹配。

m代表多行匹配。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接