электронный модификатор в javascript? (преобразование регулярных выражений из php в js) - PullRequest
0 голосов
/ 29 января 2010

У меня есть следующее регулярное выражение в PHP


$url = 'http://www.amazon.com/dp/B002JCSBE4/ref=sr_1_1?ie=UTF8&s=tv&qid=1264738369&sr=1-1/';
$url=preg_replace(
'/http:\/\/[^>]*?amazon.(.*)\/([^>]*?ASIN|gp\/product|exec\/obidos\/tg\/detail\/-|[^>]*?dp)\/([0-9a-zA-Z]{10})[a-zA-Z0-9#\/\*\-\?\&\%\=\,\._;]*/i',
'http://www.amazon.$1/dp/$3/?tag='.'someone-20',$url );

Я пытаюсь сделать то же самое, только с помощью JavaScript. Я не могу понять, как использовать параметры с чем-то вроде

search = new RegExp(regex);

Как я могу преобразовать это в Javascript?

Ответы [ 2 ]

1 голос
/ 29 января 2010

Модификатор /e используется для выполнения кода. В Javascript вы можете сделать это, передав функцию.

Например:

preg_replace("/(<\/?)(\w+)([^>]*>)/e", 
         "'\\1'.strtoupper('\\2').'\\3'", 
         $html_body);

становится

html_body.replace(/(<\/?)(\w+)([^>]*>)/, function(s, x1, x2, x3) {
  return x1 + x2.toUpperCase() + x3;
});

в Javascript. (Но опять же, вы не использовали флаг /e в этом коде PHP.)

0 голосов
/ 29 января 2010

Вы не используете модификатор e в этом регулярном выражении PHP.

Следующий JavaScript должен работать так же, как ваш PHP:

var url = 'http://www.amazon.com/dp/B002JCSBE4/ref=sr_1_1?ie=UTF8&s=tv&qid=1264738369&sr=1-1/';
var amazon_re = /http:\/\/[^>]*?amazon.(.*)\/([^>]*?ASIN|gp\/product|exec\/obidos\/tg\/detail\/-|[^>]*?dp)\/([0-9a-zA-Z]{10})[a-zA-Z0-9#\/\*\-\?\&\%\=\,\._;]*/i;
url = url.replace(amazon_re, 'http://www.amazon.$1/dp/$3/?tag=someone-20');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...