正则表达式 - 匹配字符串中的任何数字

时间:2015-06-09 19:29:11

标签: javascript regex

我有以下Javascript

function myFunction() {
    var str = "depth10 shown"; 
    var depth= str.match(/^depth[\d+$]/);
    console.log(depth);
}

我的函数是尝试查找字符串中是否存在深度*,其中*始终为数字(例如:depth0,depth1,depth100)并返回其中的数值。在上面的示例中,深度始终只返回一位而不是所有数字。任何人都可以解释原因吗?

2 个答案:

答案 0 :(得分:2)

您未正确使用字符类,而是想使用capturing group代替:

var str = 'depth10 shown or depth100 and depth1'
var re  = /depth(\d+)/gi, 
matches = [];

while (m = re.exec(str)) {
  matches.push(m[1]);
}
console.log(matches) //=> [ '10', '100', '1' ]

注意:如果您有超过1"深度*"您的字符串中的子字符串,您希望在循环中使用exec()方法,将捕获的组的匹配结果推送到结果数组。

否则,您可以在此处使用匹配方法:

var r = 'depth10 shown'.match(/depth(\d+)/)
if (r)
    console.log(r[1]); //=> "10"

答案 1 :(得分:1)

$匹配输入结束。即。 /t$/与“食客”中的't'不匹配,但在“吃”时匹配。

^匹配输入的开头。即,/^A/与“A”中的“A”不匹配,但与“An E”中的“A”匹配。

尝试:

var str = "depth10 shown".match(/depth\d+/gi);
console.log(str[0])