2016-12-19 5 views
0

zu erhalten Ich habe versucht, einen regulären Ausdruck zu erhalten, der das letzte vierte Zeichen in der Zeichenfolge auswählen kann.regulärer Ausdruck, um das vierte Zeichen von der letzten

Für Ex. Wenn "System" eine Zeichenkette ist, die ich "s" auswählen möchte, kann ich das nicht von Anfang an überprüfen, da die Anzahl der Zeichen vom Start an nicht festgelegt ist.

Bisher habe ich nur erreicht: /.{3}$/g, aber es dauert letzten drei Zeichen und nicht das Zeichen danach.

Kann mir jemand gleich helfen?

+2

Ich glaube nicht, dass JS Rückverfolgung in Regex hat. Ich würde vorschlagen 'str.charAt (str.length - 4)' – Rajesh

+1

Oder 'sstr (s.length-4, 1)' –

+0

@ WiktorStribiżew irgendeinen besonderen Grund für 'substr'? – Rajesh

Antwort

3

.(?=.{3}$) arbeitet mit der gesamten Ausdrucksmatching, nicht nur eine einfangende Gruppe.

0

const reg = /.*(.).{3}$/g 
 
const str = 'this is astring' 
 

 
console.log(
 
    str.replace(reg, '$1') 
 
)

2

Sie würden eine Gruppe verwenden:

/(.).{3}$/ 

Die vollständige Übereinstimmung hier wird stem sein, und Gruppe 1 wäre s (können Sie selbst sehen hier : https://regex101.com/r/dZwhcu/1)

Sie könnten es wie folgt lösen:

var matches = 'system'.match(/(.).{3}$/); //=> ['stem', 's'] 
if (matches[1] === 's') { 
    // ... 
} 
0

warum nicht Teilzeichenfolge so mit:

function lastFourLetters(str) 
{ 
    if (str.length < 5) 
     return str; 
    return str.substring(str.length - 4 , 4); 
} 
0

versuchen /([a-z]).{3}$/g dann in Ihrem Ergebnis verwenden, können Sie den Wert aus dem ersten Capture-Gruppe verwenden. Ändern Sie die Klasse nur für den Fall, dass Sie eine breitere oder andere Auswahl haben möchten

Verwandte Themen