2016-05-26 6 views
5

Ich möchte die Zeichen nach @ Symbol bis ein Leerzeichen erhalten.String Matching Javascript

für zB. wenn meine Zeichenfolge wie hello @world. some [email protected] ist. Dann möchte ich die Charaktere "Welt" und "Stackoverflow" bekommen.

Hier ist was ich versucht habe.

var comment = 'hello @world. some [email protected]'; 
var indices = []; 
    for (var i = 0; i < comment.length; i++) { 
     if (comment[i] === "@") { 
      indices.push(i); 
      for (var j = 0; j <= i; j++){ 
       startIndex.push(comment[j]); 
      } 
     } 
    } 

kann ich die Vorkommen von @ und Räume erhalten und schneiden dann, dass ein Teil meiner Inhalte zu bekommen, aber ich würde eine bessere Lösung/Vorschlag für dieses mögen, mit ohne REGEX. Danke im Voraus.

+4

Warum möchten Sie eine Lösung ohne Regex? Genau dafür wurde Regex gemacht. –

+1

'str.split ('@'). Splice (1) .map (funktion (w) {return w.split ('') [0];})' – haim770

+1

http://stackoverflow.com/questions/15265605/how-to-pull-Erwähnungen-out-of-Strings-wie-twitter-in-javascript, https://www.npmjs.com/package/mentions-regex –

Antwort

4

Sie können diese regex verwenden:

/@(\S+)/g 

und Gruppen Schnappen erfasst exec Verfahren in einer Schleife verwendet wird.

Dieser Regex entspricht @ und dann \S+ entspricht 1 oder mehreren Nicht-Leerzeichen, die in einer erfassten Gruppe gruppiert sind.

Code:

var re = /@(\S+)/g; 
 
var str = 'hello @world. some [email protected]'; 
 
var m; 
 
var matches=[]; 
 

 
while ((m = re.exec(str)) !== null) { 
 
    matches.push(m[1]); 
 
} 
 

 
document.writeln("<pre>" + matches + "</pre>");

PS: Beachten Sie

/@([^.\s]+)/g 

verwenden müssen, wenn Sie DOT nicht erfassen möchten nach word.

+1

Vielen Dank! Funktionierte einwandfrei. Auch eine gute Referenz, wenn Sie mit vielen Beispielen zum Lernen von Regex empfehlen können? Danke im Voraus! –

+1

Ich schlage vor, dies zu lesen: http://www.regular-expressions.info/ – anubhava