Javascript 用正则表达式过滤掉第二组数字

Javascript 用正则表达式过滤掉第二组数字,javascript,regex,Javascript,Regex,在我的HTML标记中,将有一系列具有以下命名方案的元素: name="[].timeEntries[].Time" 在两组括号之间,将有至少有一个或两个数字的数字。我需要过滤掉第二组数字 免责声明:这是我第一次了解regex 这是我目前的模式: var re = /\[\d{1,2}\].timeEntries\[(\d{1,2})\]\.Time/; 我不确定是否应该使用*或+字符来表示两个可能的数字 replace()方法是否正确 我需要避开句号“.”吗 如果您能提供任何其他建议,我们将

在我的HTML标记中,将有一系列具有以下命名方案的元素:

name="[].timeEntries[].Time"
在两组括号之间,将有至少有一个或两个数字的数字。我需要过滤掉第二组数字

免责声明:这是我第一次了解regex

这是我目前的模式:

var re = /\[\d{1,2}\].timeEntries\[(\d{1,2})\]\.Time/;
  • 我不确定是否应该使用*或+字符来表示两个可能的数字
  • replace()方法是否正确
  • 我需要避开句号“.”吗
  • 如果您能提供任何其他建议,我们将不胜感激
  • 例如,如果我遇到一个元素

    name="[10].timeEntries[9].Time"
    
    我只想把9放入一个变量中

    我不确定是否应该使用*或+字符来表示两个可能的数字

    都不要使用
    {1,2}

    \[\d{1,2}\]\.timeEntries\[(\d{1,2})\]\.Time
    

    这明确表示1或2位数字

    另外,是的,您应该转义

    您可以这样使用它:

    var re = /\[\d{1,2}\]\.timeEntries\[(\d{1,2})\]\.Time/;
    
    var myNumber = "[0].timeEntries[47].Time".match(re)[1];
    
    现在
    myNumber
    将包含
    47

    最后一个警告词,
    myNumber
    包含
    字符串
    “47”。如果要将其用作数字,则需要使用
    parseInt
    +

    var myNumber = +"[0].timeEntries[47].Time".match(re)[1];
    
    我不确定是否应该使用*或+字符来表示两个可能的数字

    都不要使用
    {1,2}

    \[\d{1,2}\]\.timeEntries\[(\d{1,2})\]\.Time
    

    这明确表示1或2位数字

    另外,是的,您应该转义

    您可以这样使用它:

    var re = /\[\d{1,2}\]\.timeEntries\[(\d{1,2})\]\.Time/;
    
    var myNumber = "[0].timeEntries[47].Time".match(re)[1];
    
    现在
    myNumber
    将包含
    47

    最后一个警告词,
    myNumber
    包含
    字符串
    “47”。如果要将其用作数字,则需要使用
    parseInt
    +

    var myNumber = +"[0].timeEntries[47].Time".match(re)[1];
    
    你很接近

    有很多方法可以做到这一点,特别是取决于文本的格式有多坚固

    您可以使用替换:

    var re = /\[\d+\]\.timeEntries\[([\d]+)\]\.Time/;
    var digits = element_name.replace(re, '$1');
    
    如果您知道它总是第二组数字,您可以使用
    match

    您还可以使用
    indexOf
    和/或
    split
    和其他一些字符串函数。。。在某些情况下,这可能更快(但我认为在您的情况下,正则表达式很好,而且可能更容易遵循)

    您已经非常接近了

    有很多方法可以做到这一点,特别是取决于文本的格式有多坚固

    您可以使用替换:

    var re = /\[\d+\]\.timeEntries\[([\d]+)\]\.Time/;
    var digits = element_name.replace(re, '$1');
    
    如果您知道它总是第二组数字,您可以使用
    match



    您还可以使用
    indexOf
    和/或
    split
    和其他一些字符串函数。。。在某些情况下,它可以更快(但我认为在您的情况下,正则表达式很好,而且可能更容易遵循)

    *为零或更多,+为一或更多。那么您是否在寻找替换函数?如果是这样,请将预期输出示例发布到您可以使用正向前瞻断言的位置。Read
    匹配任何内容,因此请确保使用“\\\
    {m,n}
    对模式进行转义,最小匹配次数为
    m
    ,最大匹配次数为
    n
    n
    可以省略)*为零或更多,+是否为一次或多次?是否正在寻找替换函数?如果是这样,请将预期输出示例发布到您可以使用正向前瞻断言的位置。Read
    匹配任何内容,因此请务必使用`\`
    {m,n}
    将其转义为与模式匹配最少
    m
    次,最多
    n
    次(
    n
    可以省略)我确信
    \d+
    会被删除fine@musefan:
    \d+
    将匹配1以上的任意位数。要求是1或2。我知道
    \d+
    会匹配什么,但尽管OP的期望可能是1或2,但现实可能是如果有3个或更多,我打赌他会想要所有的digits@musefan:如果你只想制定要求,而不是按照OP的要求去做,那么,是的,把自己击倒。如果有三个或更多的数字,那么根据OP,字符串的格式是错误的。我认为这些注释很重要。当我统治世界的一半,你统治另一半的时候。人们需要这个人工制品来证明这一切的起源。虽然我最终会赢得这场战争,因为我的军队有可能发展到数百人,而你的军队将被困在两位数的数字里!我肯定
    \d+
    会fine@musefan:
    \d+
    将匹配1以上的任意位数。要求是1或2。我知道
    \d+
    会匹配什么,但尽管OP的期望可能是1或2,但现实可能是如果有3个或更多,我打赌他会想要所有的digits@musefan:如果你只想制定要求,而不是按照OP的要求去做,那么,是的,把自己击倒。如果有三个或更多的数字,那么根据OP,字符串的格式是错误的。我认为这些注释很重要。当我统治世界的一半,你统治另一半的时候。人们需要这个人工制品来证明这一切的起源。虽然我最终会赢得这场战争,因为我的军队有可能发展到数百人,而你的军队将被困在两位数的数字里!