[英]javascript regular expression - removing comments
这个例子来自雄辩的javascript书。虽然书中有一点解释但很难理解,任何人都可以从初学者的角度来解释它。我很难找到什么斜杠。
function stripComments(code) {
return code.replace(/\/\/.*|\/\*[^]*\*\//g, "");
}
评论可以有两种形式:
// this is a comment
/* this is a comment */
不幸的是, /
和*
都是正则表达式中的特殊字符,因此必须对它们进行转义。
所以我们从空匹配表达式开始
//g
我们将它设置为匹配第一个表单, //
后跟任意数量的字符,这将是//.*
但是斜杠必须被转义
/\/\/.*/g
另一种形式, /*
后跟任何后跟*/
是/*[^]**/
但我们必须转义文字斜杠和星号
\/\*[^]*\*\/
然后将这两种形式与|
组合 表示“或”的字符:
\/\/.*|\/\*[^]*\*\/
并插入空的正则表达式
/\/\/.*|\/\*[^]*\*\//g
第一个和最后一个斜杠是分隔符。
g
最后是一个修饰符(修饰符用于执行不区分大小写和全局搜索)并执行全局匹配(查找所有匹配而不是在第一次匹配后停止)。
|
是指OR 。
\\/\\/.*
有一些转义字符,可以翻译为// followed by any characters
\\/\\*[^]*\\*\\/
也有一些转义字符,可以翻译为/*any characters*/
注意 :必须转义/
和*
因为它们由正则表达式语法(特殊字符)使用。 所以\\/
means /
和\\*
表示*
while .*
表示任何字符(0次或更多次)
由于代码的目标是删除注释,因此// xxxx
或/* xxx */
等所有注释都将替换为空字符串
/ - >正则表达式的开头
/ - >转义“/”字符
/ - >转义“/”字符
。* - >任何字符(甚至是空的) - >这是// abck的情况
| - >或
/ - >转义“/”字符
* - >转义为“*”字符
[^] * - >任何字符(多行,所以偶数\\ n \\ r)
* - >转义为“*”字符
/ - >转义“/”字符 - >这里是/ * aasd \\ nasdasd * /
/ - >正则表达式结束
g - >全局修饰符
让我们用每行一个标记将其分解:
/ # Start a new regex
# This group of tokens matches comments in the form:
# // this is a comment
\/ # An escaped forward slash
\/ # An escaped forward slash
.* # Any character, zero or more times
| # OR. This means "match either the previous or the next group of tokens".
# This group of tokens matches comments in the form:
# /*
# This is a comment, which could include some new lines
# */
\/ # An escaped forward dlash
\* # An escaped asterisk
[^]* # A newline, zero or more times
\* # An escaped asterisk
\/ # An escaped forward slash
/ # Finish the current regex.
g # This regex can match multiple times against a given input
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.