我一直試圖得到一個正則表達式,可以選擇字符串中的最後一個第四個字符。正則表達式從上次獲得第4個字符
For Ex。如果「系統」是一個字符串,我想選擇「s」,我不能檢查從開始的字符數量開始不固定。
到目前爲止,我只能達到:/.{3}$/g
,但它後面的三個字符不是後面的字符。
有人可以幫助我一樣嗎?
我一直試圖得到一個正則表達式,可以選擇字符串中的最後一個第四個字符。正則表達式從上次獲得第4個字符
For Ex。如果「系統」是一個字符串,我想選擇「s」,我不能檢查從開始的字符數量開始不固定。
到目前爲止,我只能達到:/.{3}$/g
,但它後面的三個字符不是後面的字符。
有人可以幫助我一樣嗎?
.(?=.{3}$)
適用於整個表達式匹配,而不僅僅是一個捕獲組。
const reg = /.*(.).{3}$/g
const str = 'this is astring'
console.log(
str.replace(reg, '$1')
)
你必須使用一組:
/(.).{3}$/
這裏的全場比賽將是stem
,以及1組是s
(你可以在這裏看到自己:https://regex101.com/r/dZwhcu/1)
你可以這樣解決它:
var matches = 'system'.match(/(.).{3}$/); //=> ['stem', 's']
if (matches[1] === 's') {
// ...
}
爲什麼不使用串那樣:
function lastFourLetters(str)
{
if (str.length < 5)
return str;
return str.substring(str.length - 4 , 4);
}
嘗試使用/([a-z]).{3}$/g
然後在你的結果,你可以使用從第一捕獲組的值。更改班級,以防萬一您想要更寬或不同的選擇
我不認爲JS在正則表達式中有回溯。我建議'str.charAt(str.length - 4)' – Rajesh
或's.substr(s.length-4,1)' –
@WiktorStribiżew'substr'的任何特殊原因? – Rajesh