Парсинг действительного URL из длинной строки с чистым js или jquery с использованием регулярных выражений - PullRequest
1 голос
/ 26 июля 2010

Я получаю longString из значения onclick объекта

var longString = String(this.onclick);

, как показано ниже;

function onclick (event) {window.location.href = "index.html?q1 = v1 и v2" g2 =;}

Я хочу разобрать, как показано ниже:

index.html?q1=v1&g2=v2

Как я могу сделать это с чистым js или jquery, который работает со всеми браузерами?

Ответы [ 6 ]

2 голосов
/ 26 июля 2010

Вот один из способов сделать это, если вам не нравятся регулярные выражения.

var str = 'function onclick(event) { window.location.href = "index.html?q1=v1&g2=v2"; }';
var idx = str.indexOf('"')+1;
var res = str.substr(idx, str.lastIndexOf('"') - idx );

Попробуйте: http://jsfiddle.net/Tk8aw/

2 голосов
/ 26 июля 2010

Следующее извлечет первое совпадение из любой однострочной функции (независимо от имени или пробела):

var input = "function onclick(event) { window.location.href = \"index.html?q1=v1&g2=v2\"; }";
var pattern = /function\s+\w+\(\w*\)\s*{\s*window.location.href\s*=\s*['"]([^'"]*)['"];\s*}/i;
var output = pattern.exec(input);

После этого, часть index.html... будет в output[1]

2 голосов
/ 26 июля 2010

parseUri - это то, что вы ищете.

1 голос
/ 26 июля 2010

Вы можете получить его с помощью регулярного выражения, например:

var string = 'function onclick(event) { window.location.href = "index.html?q1=v1&g2=v2"; }';
var url = string.match(/"(.*?)"/)[1];
alert(url); // == index.html?q1=v1&g2=v2, without quotes​​​​​​​​​​

Вы можете попробовать демо здесь , помните, что регулярное выражение возвращает объект, чтобы получить фактическую строку, которую вывероятно после второй записи, [1] здесь.

1 голос
/ 26 июля 2010

это то, что вы ищете

var str = 'function onclick(event) { window.location.href = "index.html?q1=v1&g2=v2"; }';
alert( /".+?"/.exec(str) );
0 голосов
/ 26 июля 2010

Эта функция не выполняет никакого анализа, но вместо этого объявляет свой собственный window.location.href, уничтожает данный код, поэтому onclick становится определенной функцией в рамках этой функции, запускает ее, поэтому наш local window.location.href обновляется, а затем возвращает его. Предполагается, что содержимое строки известно , безопасно и похоже на то, что вы уже дали.

function extractURL(code) {
    var window = { location: { href: '' } };
    eval(code);
    onclick();
    return window.location.href;
}

Пример использования,

var fn = 'function onclick(event) { window.location.href = "index.html?q1=v1&g2=v2"; }';
extractURL(fn); // "index.html?q1=v1&g2=v2"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...