Ich habe diesen regulären Ausdruck, der alle Wörter, die mit @ beginnen, in span-Tags einfügt. Ich habe erreicht, was benötigt wird, aber ich bin nicht sicher, ob ich vollständig verstehe, was ich hier getan habe.

content.replace(/(@\S+)/gi,"<span>$1</span>")

  1. Das () bedeutet, ein ganzes Wort zu finden, oder?
  2. Das @ bedeutet mit @ beginnen.
  3. Das \ S bedeutet "gefolgt von irgendetwas bis zu einem Leerzeichen".

Aber wie kommt es, dass wenn Sie das + -Zeichen nach dem \ S nicht hinzufügen, es nur mit dem ersten Buchstaben übereinstimmt?

Jede Eingabe wäre dankbar.

0
user3001191 1 Dez. 2013 im 13:10

4 Antworten

Freigeben von Code zum Ändern von Hashtags in Links

var p = $("p");
var string = p.text();

p.html(string.replace(/#(\S+)/gi,'<a href="http://twitter.com/hashtag/$1">#$1</a>'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Test you code here  #abc #123 #xyz</p>
0
Ashhad Sameer 6 Nov. 2017 im 09:38
content.replace(/(@\S+)/gi,"<span>$1</span>")

(@\S+) ist eine Erfassungsgruppe, die @ gefolgt von 1 oder mehr (+ bedeutet 1 oder mehr) Nicht-Leerzeichen (\S ist ein Nicht-Leerzeichen)
g bedeutet global, dh alle Instanzen ersetzen, nicht nur die erste Übereinstimmung
i bedeutet Groß- und Kleinschreibung nicht beachten
$1 ruft ab, was von der ersten Erfassungsgruppe erfasst wurde.

Das i ist also nicht erforderlich, hat aber keine Auswirkungen.

2
Steve P. 1 Dez. 2013 im 09:14
/(@\S+)gi/

1st Capturing group (@\S+)
    @ matches the character @ literally
    \S+ match any non-white space character [^\r\n\t\f ]
        Quantifier: Between one and unlimited times, as many times as possible, giving back as needed [greedy]
g - all the matches not just first
i - case insensitive match
0
Vinay Pratap Singh 1 Dez. 2013 im 09:17

Das \ S bedeutet "gefolgt von irgendetwas bis zu einem Leerzeichen".

Das bedeutet nicht \S. Es ist "jedes Zeichen, das kein Leerzeichen ist", dh ein Zeichen, das kein Leerzeichen ist.

-1
JJJ 1 Dez. 2013 im 09:15