2010-11-07 5 views
7

que je fais sans doute quelque chose de très stupide, mais je ne peux pas regexp suivante pour en Javascript:fin de match en ligne javascript regex

pathCode.replace(new RegExp("\/\/.*$","g"), ""); 

Je veux supprimer // plus tous après les 2 barres obliques.

+0

problème est avec pathCode être multiligne. Je m'attendais à ce que le $ apparaisse sur newline (\ n), avec l'indicateur g défini. Donc, ma question devient: –

+0

Comment pouvez supprimer les commentaires pour chaque ligne séparée par un saut de ligne (y compris la dernière ligne, éventuellement ne se terminant par une nouvelle ligne). –

Répondre

10

semble fonctionner pour moi:

var str = "something //here is something more"; 
console.log(str.replace(new RegExp("\/\/.*$","g"), "")); 
// console.log(str.replace(/\/\/.*$/g, "")); will also work 

Notez également que le littéral /\/\/.*$/g expression régulière est équivalente à la expression régulière générée par votre utilisation de l'objet RegExp. Dans ce cas, l'utilisation du littéral est moins verbeuse et pourrait être préférable.

Affectez-vous la valeur de retour de replace en pathCode?

pathCode = pathCode.replace(new RegExp("\/\/.*$","g"), ""); 

replace ne modifie pas l'objet de chaîne qui fonctionne sur. Au lieu de cela, il renvoie une valeur.

+0

Problème avec le mode multiligne, le commutateur m a fait l'affaire dans ce cas. Merci à tous pour votre temps! –

+0

Vous n'avez pas vu vos commentaires jusqu'à maintenant. Mais oui, le commutateur 'm' vous permet de faire correspondre en mode multiligne :) –

2

Cela fonctionne bien pour moi:

var str = "abc//test"; 
str = str.replace(/\/\/.*$/g, ''); 

alert(str); // alerts abc 
1
a = a.replace(/\/\/.*$/, "");