我正在浏览 Douglas Crockford 的 JavaScript 编程语言系列,并在他的 trim 函数中遇到了这个表达式:
String.prototype.trim = function () {
return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");
};
我明白它的作用,但它到底是如何工作的?
我正在浏览 Douglas Crockford 的 JavaScript 编程语言系列,并在他的 trim 函数中遇到了这个表达式:
String.prototype.trim = function () {
return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");
};
我明白它的作用,但它到底是如何工作的?
你应该抓住一个像expresso这样的工具,你可以在其中逐步完成正则表达式......
^\s*
- 行或字符串开头的空格,重复次数不限
(\S*(\s+\S+)*)
- 捕获组,在您的示例中编号为“$1”。
\S*(\s+\S+)*
- 除了空格之外的任何内容,任意数量的重复
(\s+\S+)*
- 另一个捕获组,它查找具有一个或多个重复的空白以及具有一个或多个重复的空白以外的任何内容。
\s*$
- 行或字符串末尾的任意数量的空格。
它在 Expresso 中的样子...