我将在此处附上一些图片来阐明我的观点。
所以我想做的是去掉数组中单词的所有标点符号。但它似乎不起作用,最大的问题是我的 \n
和 \r
正在充当换行符。
图片:
所以我的正则表达式代码
变成这个
当我在浏览器中运行它时。然后我收到错误消息:Uncaught SyntaxError: Invalid regular expression: missing/
缺少/是有道理的,因为正则表达式的其余部分现在在下面两行!
使用 RegExr 表明它应该可以工作
我确信它非常简单,但我似乎无法发现我的错误! 如果有人可以解释我的方法的错误,我将不胜感激,因为我对 RegExpressions 很糟糕!我在这里读到的其他类似问题指出缺少括号、缺少转义字符等。
我什至尝试过转义我的转义 Angular 色! IE。 \\n
和 \\r
,但这只是在新行中留下了两个额外的斜线。
以防万一:这段 JavaScript 代码是从 PHP 中回显出来的,但是如果我取出 \n
和 \r
它就可以工作,所以它不应该是 PHP 问题。
希望这是足够的信息,如果还有其他我可以添加以澄清的内容,请发表评论!
最佳答案
您遇到的问题是 \n
和 \r
是转义序列,按字面解释为换行符和回车符。他们破坏了 JS 代码(在这种情况下,文字正则表达式表示法)。
为避免数据损坏,当您将正则表达式模式从一个系统发送到另一个系统时,您最好依赖字符的十六进制表示。
使用\u000A
(或\x0A
)进行换行,使用\u000D
(\x0D
)用于回车。
还有一点要注意:在表达式中,有一个未转义的 -
创建了一个范围。我想这是故意的,但仍然是一个值得报告的细节。 ,-\/
将匹配 ,
, -
, .
和 /
。
关于javascript - 尝试在正则表达式中使用换行符导致我的 javascript 代码出现 "new line",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35248150/