Javascript 用正则表达式过滤掉第二组数字
在我的HTML标记中,将有一系列具有以下命名方案的元素:Javascript 用正则表达式过滤掉第二组数字,javascript,regex,Javascript,Regex,在我的HTML标记中,将有一系列具有以下命名方案的元素: name="[].timeEntries[].Time" 在两组括号之间,将有至少有一个或两个数字的数字。我需要过滤掉第二组数字 免责声明:这是我第一次了解regex 这是我目前的模式: var re = /\[\d{1,2}\].timeEntries\[(\d{1,2})\]\.Time/; 我不确定是否应该使用*或+字符来表示两个可能的数字 replace()方法是否正确 我需要避开句号“.”吗 如果您能提供任何其他建议,我们将
name="[].timeEntries[].Time"
在两组括号之间,将有至少有一个或两个数字的数字。我需要过滤掉第二组数字
免责声明:这是我第一次了解regex
这是我目前的模式:
var re = /\[\d{1,2}\].timeEntries\[(\d{1,2})\]\.Time/;
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,字符串的格式是错误的。我认为这些注释很重要。当我统治世界的一半,你统治另一半的时候。人们需要这个人工制品来证明这一切的起源。虽然我最终会赢得这场战争,因为我的军队有可能发展到数百人,而你的军队将被困在两位数的数字里!