无法弄清楚这个JS代码意味着什么

时间:2014-09-21 09:30:56

标签: javascript web

我一直在浏览我在网上看到的一块JS,并且无法弄清楚这段代码的含义。

global$string$newLines = function(a) {
    return a.replace(/(\r\n|\r|\n)/g, "\n");
},

我特别想知道这件作品/(\r\n|\r|\n)/g

此外 - 这台机器是否生成了代码?这就是为什么变量名称满是$ s?

6 个答案:

答案 0 :(得分:0)

他们是正常的表达

\r = Find a carriage return character
\n = Find a new line character

/ g(仅限g)意味着找到所有

http://www.w3schools.com/jsref/jsref_obj_regexp.asp

所以代码意味着找到所有\ r \ n或只是\ r或只是\ n并用\ n替换它 它们是空白字符,因此不可见。

答案 1 :(得分:0)

它是替换换行符的正则表达式。

各种浏览器/编辑器/操作系统等插入了不同类型的新行字符。

\n是所有(真正的)Unix系统的默认设置,其中\ r无意义,C,Java,C ++等采用此约定。

\r来自Mac之前的Unix系统,而重复的\r\n是Windows方式。

/g标志表示一个全局设置,告诉正则表达式搜索整个文档。

所以代码正在做的是使用正则表达式全局查找newLine的所有可能的等价物,并用事实标准替换它们,' \ n'

答案 2 :(得分:0)

这只是一个正则表达式,用于将Carriage Returns和New Line字符替换为换行符。

你的正则表达式:/(\r\n|\r|\n)/g

说明:

  

第一个捕获组(\ r \ n | \ r | \ n)

第一种选择: \ r \ n

  

\ r \ n匹配回车符(ASCII 13)     \ n匹配换行符(换行符)(ASCII 10)

第二种选择: \ r

  

\ r \ n匹配回车符(ASCII 13)

第三种选择: \ n

  

\ n匹配换行符(换行符)(ASCII 10)

g修饰符:全局。给所有比赛(即不要在第一场比赛时回归)。

PS:查看regex101.com为任何正则表达式生成如此美妙的解释。

答案 3 :(得分:0)

代码用一个换行符替换回车符/换行组合。

变量名中的$是由几个javascript编译器完成的。例如,开发人员通常会将代码分解为global.string.newline形式的命名空间。但是当我们想在客户端上运行该代码时,将对象内的对象转换为单个变量会更安全,更有效。通常,javascript编译器会更进一步,然后将这个长变量名称转换为一些简短的唯一序列,但它也会保留这个中间形式以便于调试。

答案 4 :(得分:0)

这是一个正则表达式,用字符串中的新行删除回车/换行/回车+新行。

/(\r\n|\r|\n)/g 

最后的/ g表示全局,因此贯穿整个字符串,而不仅仅是第一次出现。

Working Fiddle

JS代码:

global$string$newLines = function (a) {
    return a.replace(/(\r\n|\r|\n)/g, "\n")
}

function abc() {
    var text = document.getElementById("test").value;
    console.log(global$string$newLines(text));
}

HTML代码:

<textarea id="test"></textarea>
<button id="testClick" onclick="abc()">Click</button>

答案 5 :(得分:0)

这是一个正则表达式替换,意思是:

找到任何一个出现:

  • \ r \ n
  • \ r
  • \ n

并将其替换为\ n。

评论:

  • / g意味着它将获得所有发现,而不仅仅是第一次出现。
  • 用\ n替换\ n的第三个选项是无意义的,因为它没有效果。

替换文档并链接到正则表达式:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace