Что такое регулярное выражение JS для получения подстроки ниже? - PullRequest
0 голосов
/ 31 марта 2011

Я применил к строке следующее:

function onclick(event) {
showOverlay('overlayWrapper', 'overlayIframe', 'http://www.bestinvest.co.uk');
}

, и я хочу иметь возможность получить массив из 3 аргументов в строке, чтобы я мог использовать (например) ....

newArray[0] //<= returns 'overlayWrapper'</p> <p>newArray[2] //<= returns 'http://www.bestinvest.co.uk'

Может ли помочь использование регулярного выражения?если так как?Я хочу сделать код как можно меньше.

Для ясности, вышеупомянутая функция помещена в событие "onClick", применяемое непосредственно к тегу ссылки.Я записываю строку и затем хочу получить 3 аргумента.

Большое спасибо.

Ответы [ 4 ]

0 голосов
/ 31 марта 2011

Без разбора регулярных выражений и строк:

var str = "function onclick(event) { showOverlay('overlayWrapper', 'overlayIframe', 'http://www.bestinvest.co.uk'); }";

function showOverlay() {
 alert('this is the original overlay function and should not be called by the below!');
}

(function() {
  function showOverlay(wrapper, iframe, url) {
    //access arguments directly or by arguments[0] arguments[1] etc.
    alert(wrapper);
  };

  eval('('+str+')()');
})();
0 голосов
/ 31 марта 2011

при условии, что в onclick больше ничего нет, а 'subject' - это переменная, в которой хранится содержимое onlick, которое вы захватили ...

var newArray = subject.match(/'([^']+)'/g);
0 голосов
/ 31 марта 2011
var str = "function onclick(event) { showOverlay('overlayWrapper', 'overlayIframe', 'http://www.bestinvest.co.uk'); }";
var result = str.match(/'[^']*'/g);

это приводит к массиву:

['overlayWrapper','overlayIframe','http://www.bestinvest.co.uk']

Обновление - на самом деле это массив:

["'overlayWrapper'","'overlayIframe'","'http://www.bestinvest.co.uk'"]

Одиночные кавычки являются частью результата, поэтому вы должны удалить их потом.

0 голосов
/ 31 марта 2011

Вот дерзкий способ делать то, что вы хотите:

var str = "function onclick(event) { showOverlay('overlayWrapper', 'overlayIframe', 'http://www.bestinvest.co.uk'); }"

var str2 = str.replace("function onclick(event) { showOverlay(", "new Array(").replace("); }", ")");
var newArray = eval(str2);

alert(newArray[0]);
alert(newArray[1]);
alert(newArray[2]);
...