有人可以帮助解释这个正则表达式在JavaScript中?

时间:2012-07-04 06:42:39

标签: javascript regex

此代码用于从rawdata中删除mime类型。但我无法理解它是如何工作的

 content.replace(/^[^,]*,/ , '')

它似乎与java完全不同......任何帮助都将受到赞赏。

3 个答案:

答案 0 :(得分:2)

您的mime类型可能由逗号,和原始数据的开头分隔。 这个正则表达式说take everything from the beginning (^) that is NOT a comma ([^,]*) (the star makes it as many characters until there is a comma) and take the comma itself (,). Then replace it by nothing (''). 这个只获得第一个外观,因为它以开头标记^它必须位于字符串的开头。

答案 1 :(得分:2)

你需要知道的第一件事是JavaScript中有正则表达式文字,由斜线对构成。因此,"..."是一个字符串,/.../是一个正则表达式。实际上,与Java正则表达式相比,这是代码显示的唯一区别。

然后,正则表达式中的[abc]称为字符类,意思是“abc中的一个字符”。相反,[^abc]是一个否定的字符类,意思是“一个字符,除了 abc”。

所以你的样本意味着:

/     # Start of regex literal
^     # Start the match at the start of the string
[^,]* # Match any number of characters except commas
,     # Match a comma
/     # End of regex literal

答案 2 :(得分:1)

正则表达式是两个正斜杠之间的文本,第一个克拉(^)表示字符串的开头,括号表示字符类,括号内的克拉表示除逗号外的任何字符,然后是星号在右括号表示匹配零个或多个由字符类定义的字符(除了逗号之外的任何字符)之后,最后最后一个逗号表示匹配所有这些之后的逗号。然后在替换函数中使用它,因此匹配结果将替换为第二个参数,在您的情况下:空字符串。

基本上它匹配第一个字符,包括'content'变量中的第一个逗号,然后用空字符串替换它。