2017-02-28 2 views
-1

Ich mache ein Google Scritp, um die Aktivierungslinks der von einer Plattform empfangenen E-Mails automatisch auszuführen.Regex mit Übereinstimmung verwenden, um eine Aktivierung sha1 Code zu erfassen

Ich versuche herauszufinden, wie in einer Variablen den Code am Ende der Aktivierungslink erfassen, es ist ein sha1 Hash.

Der Code Ich versuche

if(msg.isInInbox()) { 
 
     var link = msg.getBody().match(/<a href="http:\/\/myweb.es\/testing\/code\/confirm.php?active_link=\/([\w\d]+)"/); 
 
     
 
     if(link) { 
 
      var url = 'http://myweb.es/testing/code/confirm.php?active_link=' + link[1]; 
 
      var options = { 
 
      "muteHttpExceptions": true 
 
      }; 
 
     

Aber wenn ich das Debugging auf den Link var leer ist überprüfen, so denke, etwas falsch ich mit dem regex Code am Ende des Spiels Capture, aber ich war noch nie gut in Regex, also nach Stunden, die mich mich verrückt machen, bin ich hier fragen.

EDIT ZU BEISPIEL vollständige URL:

http://myweb.es/testing/code/confirm.php?active_link=f9629b7d418315ea8f6e929d529d86cb7caf10cc

+0

'?' Ist ein spezielles Regex-Zeichen und sollte maskiert werden. Wie ein '.', aber' .' ​​ist hier nicht so kritisch. –

+0

Danke, ich werde jetzt überprüfen, ob das alles das Problem ist –

+1

Sie erfassen alle Zeichen bis zum letzten "während der Verwendung' (. +) ', Einige Änderungen in meiner Antwort erwähnt @JuanpePedro – MohaMad

Antwort

1

Ist dies für Sie arbeitet:

if(msg.isInInbox()) { 
    var link = msg.getBody().match(/<a\s*href=("|')https?:\/\/myweb.es\/testing\/code\/confirm.php\?active_link=(.+?)\1/); 

if(link) { 
    var url = 'http://myweb.es/testing/code/confirm.php?active_link=' + link[2]; 
    var options = { 
     "muteHttpExceptions": true 
    }; 
} 
  • \s* hinzugefügt, nachdem <a

  • https? für http/https übereinstimmend

  • ? vor dem active_link war optionale Anpassung; geändert zu \? für spezielle '?'

    Charakter
  • active_link=\/-active_link= geändert, weil ich durch / keinen Aktivierungslink startet nicht denken, während Sie wieder aufbauen var url ohne \/

  • ? hinzugefügt Erfassung Gruppe (.+?) am Ende href Tag zu stoppen

  • und ("|') Capturing-Gruppe nach href = für die Unterstützung "und 'Eigenschaftsdefinitionen hinzugefügt und durch \1 am Ende des Regex-Muster wieder verwendet.

Hinweis: abgestimmte Gruppe für Aktivierungslink ist link[2] während [0] ganzes abgestimmt String ist, [1] ist "oder" und [2] ist das, was Sie wollen.

+0

Versuchte die vorgeschlagene Lösung, aber die var Link zeigt als Null im Debugger.Ich versuche herauszufinden, jetzt, wenn ich finde, warum –

+0

können Sie HTML-Code einfügen Ihr Aktivierungslink in Ihrer Frage? @JuanpePedro, es ist möglich, dass Ihr Link eine Klasse oder einen Stil vor der Eigenschaft href hat ... wir können ' MohaMad

+0

Erstaunlich, MohaMad, Sie haben es geschafft.Es gab eine Klasse = kurz vor der href = so änderte es und seine Arbeit: D - Ich gebe dir meine positive, aber es zählt nicht, weil ich neu hier bin –

Verwandte Themen