Javascript 函数需要改进,应该返回一个u和一个数字(无论多长)

Javascript 函数需要改进,应该返回一个u和一个数字(无论多长),javascript,jquery,function,Javascript,Jquery,Function,我刚刚回顾了一个项目的一些功能,发现了一个问题 我有以下功能: context = context.slice(-2); 这应该得到字符串的最后一位,例如'something_2',返回值应该是'something_2',但是如果函数遇到'something_230',那么现在我假设上面的代码只返回'30',而不是'_230' var cleanItemId = function(context) { context = context.slice(-2); return co

我刚刚回顾了一个项目的一些功能,发现了一个问题

我有以下功能:

context = context.slice(-2);
这应该得到字符串的最后一位,例如'something_2',返回值应该是'something_2',但是如果函数遇到'something_230',那么现在我假设上面的代码只返回'30',而不是'_230'

var cleanItemId = function(context)
{
    context = context.slice(-2);
    return context;
}
我认为这是一个大问题,但我不确定如何解决这个问题,我假设我需要一个reg表达式,有人能给我指出正确的方向吗


任何帮助都将不胜感激。提前谢谢。

您还不需要正则表达式


您还不需要正则表达式

我想我需要一个正则表达式,有人能给我指出正确的方向吗

正则表达式可以工作,但不一定需要正则表达式。方法:

  • 使用正则表达式

    var m = context.match(/_(\d+)$/);
    if (m) {
        // Use `m[1]` to get the digits
    }
    
    该表达式表示:“一个literal
    \uu
    后跟一个或多个数字,后跟字符串的结尾,将这些数字作为捕获组捕获。”

  • 使用
    split(“”“)
    并获取结果数组中的最后一个元素

    var m = context.split('_');
    // Use `m[m.length - 1]` to get the digits
    
  • 使用
    lastIndexOf
    查找
    ,然后抓取字符串的其余部分

    var x = context.lastIndexOf('_');
    if (x !== -1) {
        // Use `context.substring(x + 1)` to get the digits
    }
    
  • 我想我需要一个正则表达式,有人能给我指出正确的方向吗

    正则表达式可以工作,但不一定需要正则表达式。方法:

  • 使用正则表达式

    var m = context.match(/_(\d+)$/);
    if (m) {
        // Use `m[1]` to get the digits
    }
    
    该表达式表示:“一个literal
    \uu
    后跟一个或多个数字,后跟字符串的结尾,将这些数字作为捕获组捕获。”

  • 使用
    split(“”“)
    并获取结果数组中的最后一个元素

    var m = context.split('_');
    // Use `m[m.length - 1]` to get the digits
    
  • 使用
    lastIndexOf
    查找
    ,然后抓取字符串的其余部分

    var x = context.lastIndexOf('_');
    if (x !== -1) {
        // Use `context.substring(x + 1)` to get the digits
    }
    

  • 创建函数似乎毫无用处:

    context = context.replace(/^.*(_\d+)$/, '$1');
    
    这一条同样有效:

    context = context.replace(/^.*(?=_\d+$)/, '');
    
    如果您想要第一部分:

    context = context.replace(/_\d+$/, '');
    

    详细信息如下:。

    创建函数似乎毫无用处:

    context = context.replace(/^.*(_\d+)$/, '$1');
    
    这一条同样有效:

    context = context.replace(/^.*(?=_\d+$)/, '');
    
    如果您想要第一部分:

    context = context.replace(/_\d+$/, '');
    
    此处的详细信息:

    如果您确定字符串中最后有一个
    \
    ,则会出现这种情况。如果还需要将字符串解析为数字:

    var num = +context.split('_')[1];
    
    如果您确定字符串中最后有一个
    \
    ,则会出现这种情况。如果还需要将字符串解析为数字:

    var num = +context.split('_')[1];
    

    如果字符串是
    “some\u thing\u 230”
    ?如果存在这种情况的可能性:
    context.split(“'').reverse()[0]
    。我只是根据给定的上下文进行回复。如果字符串是
    “some\u thing\u 230”
    ?如果存在这种情况的可能性:
    context.split(“”“).reverse()[0]
    。我只是根据给出的上下文来回答。我认为这几乎涵盖了所有合理的解决方案:)我认为这几乎涵盖了所有合理的解决方案:)