尝试在正则表达式中使用新行字符会导致我的javascript代码中出现“新行”

时间:2016-02-07 00:10:57

标签: javascript regex

我会在这里添加一些图片来表达我的观点。

所以我要做的就是从数组中输出一个单词的所有标点符号。但它似乎没有起作用,最大的问题是我的\n\r充当新行。

图片:
所以我的正则表达式代码

enter image description here

正在成为这个

enter image description here

当我在浏览器中运行它时。然后我收到错误消息:Uncaught SyntaxError: Invalid regular expression: missing /

缺失/有意义,因为正则表达式的其余部分现在是下面的两行!

使用RegExr表明它应该正常工作

enter image description here

我确定它非常简单,但我似乎无法发现我的错误! 如果有人可以解释我的方式的错误,我会很感激,因为我对RegExpressions很糟糕!我在这里读到的其他类似问题指出了缺少括号,缺少转义字符等。

我甚至试图逃脱逃脱的角色!即。 \\n\\r,但只是在新行上留下了两个额外的斜杠。

如果它有帮助:这个JavaScript代码正在从PHP中回显,但是如果我取出\n\r它就可以了,所以它不应该是PHP问题。

希望这是足够的信息,如果有其他我可以添加澄清请注释!

1 个答案:

答案 0 :(得分:1)

您遇到的问题是\n\r是转义序列,并按字面解释为换行符和回车符号。它们破坏了JS代码(在本例中,是文字正则表达式)。

为了避免数据损坏,当您将正则表达式模式从一个系统发送到另一个系统时,您最好依赖于字符的十六进制表示。

使用\u000A(或\x0A)换行,\u000D\x0D)回车。

还有一句话:在表达式中,有一个未转义的-可以创建一个范围。我想这是故意的,但仍然是一个值得报道的细节。 ,-\/将与,-./匹配。