可以'我搞不清楚这个JS代码是什么意思

Can't figure out what this JS code means

本文关键字:JS 代码 是什么 意思 搞不清楚 可以      更新时间:2023-09-26

我一直在浏览我在网上看到的一段JS,不明白这段代码的含义。

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

我特别想知道/('r'n|'r|'n)/g

还有-这是机器生成的代码吗?这就是为什么变量名中充满了%s吗?

它们是正则表达式

'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并将其替换为它们是空白字符,因此不可见。

这是一个用于替换换行符的正则表达式。

各种浏览器/编辑器/OS等插入了不同类型的换行符。

'n是所有(真正的)Unix系统上的默认值,''r''n没有任何意义,C、Java、C++等都采用了此约定。

'r来自Mac在成为Unix系统之前的时代,而重复的'r'n是Windows的方式。

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

因此,该代码所做的是使用正则表达式全局查找newLine的所有可能等价物,并将其替换为实际标准"''n"

这只是一个正则表达式,用于用换行符替换回车符和换行符。

您的Regex:/('r'n|'r|'n)/g

说明:

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

第一种选择:''r''n

''r与回车符匹配(ASCII 13)''n匹配换行符(换行)字符(ASCII 10)

第二种选择:''r

''r与回车符(ASCII 13)匹配

第三种选择:''n

''n匹配换行符(换行)字符(ASCII 10)

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

附言:查看regex101.com,为任何Regex生成如此美丽的解释。

代码将回车/换行组合替换为一个换行。

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

它是一个正则表达式,用于从字符串中删除回车/换行/回车+换行。

/('r'n|'r|'n)/g 

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

工作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>

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

查找任何一种情况:

  • ''''r''n
  • ''r
  • ''n

并将其替换为''n。

评论:

  • /g表示它将处理所有发现,而不仅仅是第一次出现
  • 第三个替换为的选项毫无意义,因为它没有任何作用

替换的文档和regex链接:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace