为啥正则表达式在我的 JavaScript 中占据主导地位,我如何坚持“这是一个字符串”? [关闭]

Posted

技术标签:

【中文标题】为啥正则表达式在我的 JavaScript 中占据主导地位,我如何坚持“这是一个字符串”? [关闭]【英文标题】:Why are regular expressions taking the helm in my JavaScript, and how do I insist "this is a string"? [closed]为什么正则表达式在我的 JavaScript 中占据主导地位,我如何坚持“这是一个字符串”? [关闭] 【发布时间】:2012-12-15 19:32:18 【问题描述】:

我的 javascript 代码如下:

 quotes = [];
 quotes[quotes.length] = "ABC quote";
 quotes[quotes.length] = "DEF quote";
 ...

其中一条特别是:

quotes[quotes.length] = "Mark Twain said, &apos;The secret source of humor itself is not joy but sorrow.  There is no humor in Heaven.&apos;<br /><a href=\"/pain\/">Humor Delivers Pain</a>";

Chrome 抱怨那条线,超过一百行,我试图解决将撇号替换为 ' 的问题。但是,它仍然在抱怨这一行,语法高亮显然没有看到开头的双引号,而只有正则表达式,/pain/">Humor Delivers Pain。。 p>

该表达式之前的所有内容都按预期突出显示,作为字符串,即使这样的正则表达式字符串是样板子字符串;上一行,就像之前的那些:

quotes[quotes.length] = "The author was shaped by M.K. Gandhi. Here is why he is taking leave of Gandhi.<br /><a href=\"/gandhi/\">Farewell to Gandhi</a>";

即使这在引号内包含可能是正则表达式文字的内容,它也会被解释为预期的,作为包含转义引号的双引号字符串。

我正在尝试的页面是 http://JonathansCorner.com/firestorm/ 。它旨在在页面顶部打印出通知,并更改链接。现在,它在作为马克吐温名言的行上崩溃了。

Firefox 对 Twain 的引用提出了投诉,称语句前缺少分号。我不确定那是从哪里来的;这可能是更高报价造成的二次损害吗?

JavaScript 本身位于 http://jonathanscorner.com/include/deprecation_notice.js。

--编辑--

@Lightness,问题表现为前一行的两行样本,然后是绘制错误的行。有同样的错误,在前面的脚本行指出,在:

quotes = [];
quotes[quotes.length] = "The author was shaped by M.K. Gandhi. Here is why he is taking leave of Gandhi.<br /><a href=\"/gandhi/\">Farewell to Gandhi</a>";
quotes[quotes.length] = "Mark Twain said, &apos;The secret source of humor itself is not joy but sorrow.  There is no humor in Heaven.&apos;<br /><a href=\"/pain\/">Humor Delivers Pain</a>";

【问题讨论】:

语法着色应该是一个强烈的提示...... 几乎可以肯定是二次损坏,是的。您应该创建一个独立的 10 行测试用例来展示该问题。 "我的代码没有正确高亮,浏览器无法解析我的代码!肯定是高亮和解析器的问题!" @Tinctorius,请问您为什么认为这种侮辱必不可少?像许多其他程序员一样,我发布诊断信息是为了询问我的代码为什么会造成问题,而不是抱怨 Firefox 和 Chrome 没有合法地处理 JavaScript。 什么侮辱?我只看到你从你的发现中得出的结论的一个模仿。 【参考方案1】:
<a href=\"/pain\/">

第二个双引号没有转义。 \" 不是 /"

将这些引号存储在纯文本文件或数据库中并自动转义它们可能会更可靠。手动转义大量文本是一件苦差事。

【讨论】:

以上是关于为啥正则表达式在我的 JavaScript 中占据主导地位,我如何坚持“这是一个字符串”? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为啥加号运算符在 JavaScript 的正则表达式中不起作用? [复制]

为啥我没有得到正则表达式组值

Javascript 不会使用正则表达式拆分

为啥这个 javascript 正则表达式不起作用?

正则表达式检测字符串中的 Javascript

使 JavaScript 正则表达式等效于 PHP 正则表达式