使用exec()匹配字符串

时间:2011-01-05 03:25:30

标签: javascript regex

我有一个字符串,我想将其提取出来。字符串是这样的:

cdata = "![CDATA[cu1hcmod6rbg3eenmk9p80c484ma9B]]";          

我想要cu1hcmod6rbg3eenmk9p80c484ma9B。换句话说,我想要![[CDATA[*]]内的任何内容。

我尝试使用以下javascript代码段:

cdata = "![CDATA[cu1hcmod6rbg3eenmk9p80c484ma9B]]";
rePattern =    new RegExp("![?:\\s+]]","m");
arrMatch = rePattern.exec( cdata );
result = arrMatch[0];

但代码不起作用,我很确定这是我如何指定导致问题的匹配字符串的方式。知道怎么解决吗?

2 个答案:

答案 0 :(得分:4)

你的模式应该是......

/^!\[CDATA\[(.+?)\]\]$/

哪个是......

  1. 匹配文字从![CDATA[开始。
  2. 懒惰匹配所有内容直至结束]并将其保存在捕获组$1中(感谢Phrogz提出的出色建议)。
  3. 匹配额外]]
  4. 您的字符串应该显示为arrMatch[1]

答案 1 :(得分:1)

试试这个:

var cdata = "![CDATA[cu1hcmod6rbg3eenmk9p80c484ma9B]]";
var regPattern =  /(.*CDATA\[)(.*)(\]\].*)/gm;
alert(cdata.replace(regPattern, "$2"));