在我的HTML标记中,将会有一系列具有以下命名方案的元素:
name="[].timeEntries[].Time"
在两组括号中,将有至少一个可能两位数的数字。我需要过滤掉第二组数字。
免责声明:这是我第一次了解正则表达式。
到目前为止,这是我的模式:
var re = /\[\d{1,2}\].timeEntries\[(\d{1,2})\]\.Time/;
例如,如果我遇到带
的元素name="[10].timeEntries[9].Time"
我想把9放入变量。
答案 0 :(得分:4)
我不确定是否应该使用*或+字符来表示两个可能的数字。
不要使用{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
包含string
“47”。如果您打算将其用作数字,则需要使用parseInt
或使用+
:
var myNumber = +"[0].timeEntries[47].Time".match(re)[1];
答案 1 :(得分:0)
你非常接近。
有很多方法可以做到这一点 - 特别是取决于该文本格式的稳固程度。
您可以使用替换:
var re = /\[\d+\]\.timeEntries\[([\d]+)\]\.Time/;
var digits = element_name.replace(re, '$1');
如果您知道它始终是第二组数字,则可以使用match
您还可以使用indexOf
和/或split
以及其他一些字符串函数...在某些情况下可以更快(但我认为在您的情况下,正则表达式很好,可能更容易遵循)