了解RegEx空白字符

时间:2015-09-27 21:27:26

标签: javascript jquery regex

我刚刚浏览了jQuery库的addClass函数代码,因为我需要为我自己的库创建一个与此类似的函数,我遇到了以下代码行:

cur = elem.nodeType === 1 && ( elem.className ?
                    ( " " + elem.className + " " ).replace( rclass, " " ) :
                    " "
                ); 

我相信这会返回当前节点的类,我理解它的大部分内容,直到我遇到我的威胁,正则表达式rclass,现在rclass实际上是/[\t\r\n\f]/g,现在如果我使用 ONLINE TOOL 来解码此regrex,我得到以下内容:

/[\t\r\n\f]/g
[\t\r\n\f] match a single character present in the list below
\t Tab (ASCII 9)
\r matches a carriage return (ASCII 13)
\n matches a line-feed (newline) character (ASCII 10)
\f matches a form-feed character (ASCII 12)
g modifier: global. All matches (don't return on first match)

我无法完全理解上述内容的真正含义,我理解\t Tab,究竟是什么line-feedform-feed

THIS QUESTION 既没有得到答案,也没有得到任何答案令人信服的回答

谢谢。

亚历-Z

3 个答案:

答案 0 :(得分:1)

它们基本上只是其他类型的换行空白字符。

replace()的调用正在用一个简单的空字符串(" ")替换类名中的所有选项卡和换行符实例。

如果真的希望了解更多信息,可以read a lot about new lines

答案 1 :(得分:1)

它们是空格字符。 \nline-feed相当于Enter或Return(\r\n非常相似,with some oddities in linux/osx/windows)。 \f我不知道它是如何使用的,但我发现它也是一种空白形式。

事实上,我做a small library来复制一些jQuery功能。它没有完成,也没有维护,但那部分确实已经完成了。我这样实现了它:

/**
 * .addClass(name)
 * 
 * Add a class to the matched nodes
 * Possible polyfill: https://github.com/eligrey/classList.js
 * @param String name the class name we want to add
 * @return this Umbrella object
 */
u.prototype.addClass = function(name){
  // Loop through all the nodes
  this.each(function(){
    // Allow for several class names like "a b c"
    this.classList.add(name.split(" "));
  });
  return this;
};

答案 2 :(得分:1)

表单提要(\ f)基本上是分页符。它现在还没有被使用,但仍然在一些编辑中使用。

回车符(\ r)和换行符(\ l)是换行符。这些是常见的地方,通常由新行(\ n)捐赠,这是说“当前系统中的新行字符无论如何”。

在UNIX相关系统(例如Linux和OSX)中,只有在Windows使用\ r \ l的地方才使用\ l。旧Mac(OSX之前)使用\ r \ n。

所有这些都是旧的打字术语,已被转移到计算机上。 Windows通过捐赠新行来更精确地复制这一点,因为它们都会向下和跨越页面。