Javascript 从最后一个字符中获取第四个字符的正则表达式

Javascript 从最后一个字符中获取第四个字符的正则表达式,javascript,regex,Javascript,Regex,我一直在尝试得到一个正则表达式,它可以选择字符串中的最后四个字符 例如,如果“system”是一个我想选择“s”的字符串,我无法检查是否从开始,因为从开始的字符数不是固定的 到目前为止,我只访问了:/.{3}$/g,但它使用的是最后三个字符,而不是后面的字符 有人能帮我吗? const reg=/.*(。{3}$/g const str='这是astring' console.log( str.replace(注册号,'1') ) const reg=/.*(。{3}$/g const str=

我一直在尝试得到一个正则表达式,它可以选择字符串中的最后四个字符

例如,如果“system”是一个我想选择“s”的字符串,我无法检查是否从开始,因为从开始的字符数不是固定的

到目前为止,我只访问了:
/.{3}$/g
,但它使用的是最后三个字符,而不是后面的字符

有人能帮我吗?

const reg=/.*(。{3}$/g
const str='这是astring'
console.log(
str.replace(注册号,'1')
)
const reg=/.*(。{3}$/g
const str='这是astring'
console.log(
str.replace(注册号,'1')

)
您必须使用一个组:

/(.).{3}$/
这里的完全匹配将是
stem
,第1组将是
s
(您可以在这里看到:)

您可以按如下方式解决此问题:

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

您必须使用一个组:

/(.).{3}$/
这里的完全匹配将是
stem
,第1组将是
s
(您可以在这里看到:)

您可以按如下方式解决此问题:

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); 
}
函数lastFourLetters(str)
{
如果(str.length<5)
返回str;
返回str.substring(str.length-4,4);
}

为什么不这样使用子字符串:

function lastFourLetters(str)
{
   if (str.length < 5)
       return str;
   return str.substring(str.length - 4 , 4); 
}
函数lastFourLetters(str)
{
如果(str.length<5)
返回str;
返回str.substring(str.length-4,4);
}

尝试使用
/([a-z])。{3}$/g
然后在结果中,可以使用来自第一个捕获组的值。更改类以防需要更广泛或不同的选择

尝试使用
/([a-z])。{3}$/g
然后在结果中,可以使用来自第一个捕获组的值。更改类以防需要更广泛或不同的选择

(=.{3}$)
可用于整个表达式匹配,而不仅仅是捕获组。

(=.{3}$)
可用于整个表达式匹配,而不仅仅是捕获组。

我认为JS在正则表达式中没有回溯。我建议
str.charAt(str.length-4)
s.substr(s.length-4,1)
@WiktorStribiż查看
substr
的任何特殊原因?@WiktorStribiżew:您可以编写
s.substr(-4,1)
(当起始索引为负时
s.length
是隐式的)@CasimiretHippolyte我不确定,因此我不认为。如果不准确,请道歉。是的,我指的是向后看。抱歉,我认为JS在正则表达式中没有回溯。我建议
str.charAt(str.length-4)
s.substr(s.length-4,1)
@WiktorStribiż查看
substr
的任何特殊原因?@WiktorStribiżew:您可以编写
s.substr(-4,1)
(当起始索引为负时
s.length
是隐式的)@CasimiretHippolyte我不确定,因此我不认为。如果不准确,请道歉。是的,我指的是向后看。抱歉搞混了