2011-01-05 2 views
0

У меня есть строка, в которой я хочу извлечь значение. Строка что-то вроде этого:Использование exec() для соответствия строкам

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

И я хочу cu1hcmod6rbg3eenmk9p80c484ma9B. Другими словами, я хочу что-нибудь внутри ![[CDATA[*]].

Я пытался использовать следующий фрагмент код: яваскрипт

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

Но код не работает, я уверен, что это так, как я, как указать соответствующую строку, которая вызывает проблему. Любая идея, как это исправить?

ответ

1

Попробуйте это:

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

Ваш рисунок должен быть чем-то вроде ...

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

Который ...

  1. Match буквальным начиная ![CDATA[.
  2. Ленивый матч до закрытия ] и сохранить его в группе захвата $1 (спасибо Phrogz за отличное предложение).
  3. Дополнительная информация ]].

Ваша строка должна быть доступна как arrMatch[1].

+0

Я пытался что-то вроде 'rePattern = новый RegExp ("/^\ [CDATA \ [([^ \] +) \] \] $ /!", "М"); ', но есть синтаксическая ошибка. – Graviton

+0

@ Ngu Soon Hui Дайте мне минутку, чтобы проверить это :) – alex

+0

@Ngu, это литерал регулярного выражения, вы не ставите кавычки вокруг него: 'rePattern =/^! \\ [CDATA \\ [([^ \\ ] +) \\] \\] $/m; ' –

Смежные вопросы