2016-12-19 36 views
0

我一直試圖得到一個正則表達式,可以選擇字符串中的最後一個第四個字符。正則表達式從上次獲得第4個字符

For Ex。如果「系統」是一個字符串,我想選擇「s」,我不能檢查從開始的字符數量開始不固定。

到目前爲止,我只能達到:/.{3}$/g,但它後面的三個字符不是後面的字符。

有人可以幫助我一樣嗎?

+2

我不認爲JS在正則表達式中有回溯。我建議'str.charAt(str.length - 4)' – Rajesh

+1

或's.substr(s.length-4,1)' –

+0

@WiktorStribiżew'substr'的​​任何特殊原因? – Rajesh

回答

3

.(?=.{3}$)適用於整個表達式匹配,而不僅僅是一個捕獲組。

0

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

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

2

你必須使用一組:

/(.).{3}$/ 

這裏的全場比賽將是stem,以及1組是s(你可以在這裏看到自己:https://regex101.com/r/dZwhcu/1

你可以這樣解決它:

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

爲什麼不使用串那樣:

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

嘗試使用/([a-z]).{3}$/g然後在你的結果,你可以使用從第一捕獲組的值。更改班級,以防萬一您想要更寬或不同的選擇

相關問題