2016-06-14 3 views
1

J'ai le modèle regex suivant pour faire correspondre toute déclaration de fonction de type function funcname() {.Regex pour correspondre à n'importe quelle ligne de déclaration de fonction Javascript/jQuery

function\s+(.*?)\)\s*{ 

Mais parfois, dans les fonctions Javascript/jQuery sont déclarées de façon aussi ci-dessous:

funcName = function() {

Ou

jQuery.fn.funcName = function() {

Je ne sais pas comment ORify regex permet de faire correspondre toutes les syntaxes ci-dessus. Les accolades peuvent être dans nextline selon les règles du format de code.

+0

Utilisez [ ' (?: (\ w + (?: \. \ w +) *) \ s * = \ s *)? function \ s * (. *?) \ ('] (https://regex101.com/r/lO0cB9/1) et vérifiez si le groupe 2: s'il correspond, utilisez-le, sinon, utilisez la valeur du groupe 1. –

+0

Merci, cela fonctionne pour moi aussi, s'il vous plaît ne pas supprimer ce comme NT. –

Répondre

0

Quelque chose comme cela devrait fonctionner:

function.*{|\w* \= function.*{|jquery.*{ 

Le caractère barre verticale est la façon dont vous "orify" dans regex.

Et pour faire face à plusieurs lignes, vous devez utiliser le sélecteur de nouvelle ligne: \ n

Par exemple, au match:

function funcname() { 

} 

Vous pouvez utiliser:

function.*\{\n*} 
+0

C'est la regex la plus courte correspondant à toutes les syntaxes de fonction de Javascript et jQuery. Merci beaucoup. –

+0

Encore une chose, s'il vous plaît fournissez une rupture de votre regex et pouvez-vous l'entourer entre parenthèses pour faire un groupe tel que si je veux ajouter quelque chose juste après cette ligne de déclaration comprenant un char de nouvelle ligne? –

+0

@VickyDev Je ne comprends pas, s'il vous plaît clarifier –