2010-04-08 5 views
2

Comment trouver ci-dessous le bloc de commentaire (s) avec javascript/jquery regex:Javascript RegEx Question

/* 

    some description here 

    */ 

Il peut même ressembler à:

/* some description here 
    */ 

Ou

/* some description here */ 

Répondre

2

Avec php je pense que ce serait:

$pattern='/\/\*.*?/*///'; 

ou

$ pattern = '/\*[^*]*\*+([^/*][^*]*\*+)*/';

chk ceci

Improving/Fixing a Regex for C style block comments

C'est de faire correspondre les blocs vides de commentaire:

^\s+/\*{1,}\n(^\s*\*{1,}\s*)+\*{1,}/ 
+0

Cela ne prend pas en retour chariot de compte ou des sauts de ligne. Je pense que le demandeur doit être capable de détecter les commentaires de bloc avec plusieurs lignes. Cependant, cela fonctionne pour one-liners. –

+0

@Levi Hackwith correspond à sa dernière exigence, il a dit OU n'a pas dit ET: D – ant

+0

La question ne dit-elle pas explicitement Javascript? – Pointy

1
var match = myString.match(/\/\*([\w\W]*)\*\//) 

Si match !== null, match[0] contiendra les commentaires et match[1] contiendra le commentaire sans les délimiteurs de commentaire.

edit: il est multiligne maintenant;)

+0

Utilisez '[d \ D]' au lieu de '.'. Cela correspondra aux nouvelles lignes. Au moins, il le fait dans.NET =) – Jens

+0

droite, je l'ai trouvé moi-même avec \ w \ W :) – Alsciende

+0

Ne sont pas à la fois "*" et "/" pas des caractères de mot? Ainsi, ne vont-ils pas tous les deux "\ W"? En effet, n'est-ce pas "[\ w \ W]" à peu près la même chose que "."? – Pointy

1

Voici une réponse réelle Javascript:

var commentRegex = /\/\*([^/]|\/[^*])*\*\//; 

Si vous avez besoin d'une version qui vérifie si une chaîne entière est un commentaire:

var completeCommentRegex = /^\/\*([^/]|\/[^*])*\*\/$/m; 

Explication: la regex correspond à /*, suivie de n'importe quel nombre de caractères Acters autres que "/", ou "/" suivi de tout ce qui n'est pas un astérisque, et enfin la fermeture */. Le drapeau "m" dans la deuxième version garantit que les nouvelles lignes intégrées ne gâcheront pas les ancres "^" et "$".

Enfin, si vous voulez réellement le texte du commentaire, vous devez ajouter un bloc parenthétique approprié (après le /* et avant le */).