2010-01-29 5 views
0

Je l'expression régulière suivante en PHPe-modifier en javascript? (Conversion regex de php à js)


$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); 

Je suis en train de faire la même chose, juste avec javascript. Je ne peux pas comprendre comment utiliser des paramètres avec quelque chose comme

search = new RegExp(regex); 

Comment puis-je convertir en Javascript?

Répondre

0

Vous n'utilisez pas le modificateur e dans cette regex PHP.

Le JavaScript suivant devrait faire la même chose que votre 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'); 
1

Le modificateur /e est utilisé pour exécuter du code. En Javascript, vous pouvez le faire en passant une fonction.

Par exemple:

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

devient

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

en Javascript. (Mais encore une fois, vous n'avez pas utilisé le drapeau /e dans ce code PHP.)