Muszę dopasować wszystkie wielkie litery tylko wtedy, gdy są w środku słowa. Dla exmaple RegExr miałby dopasować do listu {x1}}. someThings dla listu {x3}}. Jeśli start kapitałowy na początku słowa, którego nie powinno sięgać.

Ten regex prawie go pasuje, ale faktycznie pasuje do obu małych liter obok wielkiej litery.

/[a-z][A-Z]/g

Na przykład dla słowa RegExr, pasuje do gE, ale muszę dopasować tylko E.

aktualizacja

Zaktualizowany tytuł, aby określić, że ta sprawa zdarza się w zdaniu, nie pojedynczych słów.

1
Andrius 25 czerwiec 2017, 12:34

3 odpowiedzi

Najlepsza odpowiedź

Możesz być w stanie korzystać z granic nieformowawczych tutaj. Znaki słów (\w) są literami [a-zA-Z], numery [0-9] i podkreślenie _.

Korzystając z \B[A-Z]\B Możesz dopasować każdą wielką literę, która znajduje się w słowie. Spowoduje to również:

  • 9Gag
  • _H_ello
4
Sebastian Proske 25 czerwiec 2017, 09:42

Rozwiązanie przy użyciu funkcji RegExp.prototype.exec():

var str = 'RegExr someTextBetween JavaScript',
    matched = [],
    re = /[^A-Z\s]([A-Z])[^A-Z\s]/g;
    
while ((m = re.exec(str)) !== null) {
    matched.push(m[1]);
}
console.log(matched);
0
RomanPerekhrest 25 czerwiec 2017, 09:48

To powinno wystarczyć:

/\B[A-Z]\B/g

Użyj \B dla granic programu Word

Zobacz Oto do testów i wyjaśnień.

0
Goodbye StackExchange 25 czerwiec 2017, 09:43