3

假设我们有一个包含这些类的元素:“floatLeft item4”。

如果我想将数字“4”保存到“item4”中的变量中,我该怎么做?

我想我会使用这种模式 "/item(\d+)/" 但我是使用替换还是匹配以及如何使用?

4

4 回答 4

2
var str = "item4",
    num = (str.match(/item([0-9]+)/)||[])[1]; // if no match, `match` will return null therefore the `|| []` (or empty array). 

console.log(num); // "4" (typeof num === "string")

console.log(+num) // 4 (typeof num === "number")
于 2013-04-18T07:50:47.727 回答
2

使用替换:

"floatLeft item4".replace(/.*item(\d+)/,"$1")

使用匹配:

"floatLeft item4".match(/item(\d+)/)[1]

exec(很像匹配)

/item(\d+)/.exec("floatLeft item4")[1]

使用拆分(再次,很像匹配):

"floatLeft item4".split(/item(\d+)/)[1]

http://jsfiddle.net/UQBNn/

尽管split并非所有浏览器都支持该方法(例如 IE ..)

于 2013-04-18T07:59:28.680 回答
1

您可以像这样使用匹配:

var str = "item4",
    num = +str.match(/item(\d+)/)[1]; // => 4

我用一元+转换为一个数字。您可以改用parseIntorNumber构造函数。

于 2013-04-18T07:47:17.573 回答
0

您需要.match(..)与捕获组一起使用。

"floatLeft item4".match(/item(\d+)/)
// Result: ["item4", "4"]
于 2013-04-18T07:48:32.780 回答