javascript正则表达式 - 从字符串中提取数字

时间:2017-02-01 03:57:25

标签: javascript regex

鉴于“1/2009停留时间更长”或“34/1874必须走”,如何使用正则表达式在“/”后面找到数字。
'1/2009'.match(/\d+\/(\d)\d\d\d/g)[0]正在返回1/2009,这不是我想要的。 THX

3 个答案:

答案 0 :(得分:2)

如果您想在/

之后立即获得一位数,您的RegEx是有效的

您的正则表达式\d+\/(\d)\d\d\d将匹配数字/,然后是四位数,并在捕获的组中的斜线后添加第一个数字。 请注意,第0个捕获的组将包含完整匹配的字符串。 g标志不是必需的,因为该模式中只有一个数字实例。

您可以使用此正则表达式,但使用第一个索引可以在斜杠后立即获取数字。

'1/2009'.match(/\d+\/(\d)\d\d\d/g)[1]
                                   ^  : Get me the value from first captured group.

这个正则表达式可以优化到

以下
.match(/\/(\d)/)[1]

这将匹配后跟/的数字。并使用第一个捕获的组来提取数字。



<input type="text" onblur="console.log(this.value.match(/\/(\d)/)[1])" />
&#13;
&#13;
&#13;

获取/

之后的所有数字

只需在捕获的群组中将+量词添加到\d

.match(/\/(\d+)/)[1]

答案 1 :(得分:1)

尝试

&#13;
&#13;
var string = "1/2009 stay longer";
console.log(string.match(/\/(\d+)/)[1]);
&#13;
&#13;
&#13;

\d+匹配一个或多个数字。如果您只想在/之后立即捕获数字,请改用string.match(/\/(\d)/

答案 2 :(得分:0)

您也可以使用regExp对象的exec方法:

console.log(/\d+\/(\d).*/.exec('1/2009')[1]);