正则表达式匹配什么内部报价但行内的报价不同

时间:2014-02-18 02:01:18

标签: javascript regex match eval

我一直在尝试使用此正则表达式/(['])((?:(?!\1)[^\\]|(?:\\\\)*\\[^\\])*)\1/来收集来自GET响应的“变量”列表数组。

字符串如下:

  "var chatbox_messages='<p class="chatbox_row_1 clearfix"><span title="17 Feb 2014">[20:46:07]</span>&nbsp;<span style="font-style:italic">You are disconnected.</span></span></p>';var chatbox_memberlist='<h4 class="member-title online">Online</h4><ul class="online-users"><li><a href="/u1" oncontextmenu="return showMenu(1,'Admin',1,2,1,2,1,event,'');" onclick="return copy_user_name('Admin');" target="_blank"><span style="color:#000099"><strong>@</strong></span>&nbsp;<span style="color:#000099"><strong>Admin</strong></span></a></li></ul>';var chatbox_last_update=1392687967.7403; "

上面的字符串只是有x溢出而且很烦人......

无论如何,在我之前编写此代码的用户使用的是eval而我没有使用eval所以我正在尝试修复代码并获取参数以便我可以这样做

var response = responseText.match(/(['])((?:(?!\1)[^\\]|(?:\\\\)*\\[^\\])*)\1/g);
    var message = response[0];
    var second_message = response[1];

虽然我使用的正则表达式都没有得到我所需要的!它要么将变量与字符串分离成数组的片段,要么仍然抓住第一个引号',我根本不想要它们......

任何人都可以帮助我或引导我朝着正确的方向前进。

2 个答案:

答案 0 :(得分:0)

在你的比赛中这样做:

var newMatchWithoutQuotes=match.replace("'","");

这将删除引号;

答案 1 :(得分:0)

我相信你的意思是逃避双引号:

"var chatbox_messages='<p class=\"chatbox_row_1 clearfix\"><span title=\"17 Feb 2014\">[20:46:07]</span>&nbsp;<span style=\"font-style:italic\">You are disconnected.</span></span></p>';var chatbox_memberlist='<h4 class=\"member-title online\">Online</h4><ul class=\"online-users\"><li><a href=\"/u1\" oncontextmenu=\"return showMenu(1,'Admin',1,2,1,2,1,event,'');\" onclick=\"return copy_user_name('Admin');\" target=\"_blank\"><span style=\"color:#000099\"><strong>@</strong></span>&nbsp;<span style=\"color:#000099\"><strong>Admin</strong></span></a></li></ul>';var chatbox_last_update=1392687967.7403; "

如果字符串始终';结尾,则可以使用此正则表达式:

/'.*?';/