我正在阅读Douglas Crockford的JavaScript编程语言系列,并在他的修剪函数中遇到了这个表达式:
String.prototype.trim = function () {
return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");
};
我得到它的功能,但它在世界上是如何运作的?
答案 0 :(得分:1)
你应该使用像expresso这样的工具,在那里你可以逐步完成正则表达式...
^\s*
- 行或字符串开头的空格,任意数量的重复
(\S*(\s+\S+)*)
- 捕获组,在您的示例中编号为“$ 1”。
\S*(\s+\S+)*
- 除了空白之外的任何东西,任意数量的重复
(\s+\S+)*
- 另一个捕获组,它查找具有一个或多个重复的空白以及除了具有一个或多个重复的空白之外的任何内容。
\s*$
- 行或字符串末尾的任意数量的空格。
在Expresso中看起来像什么......