簡體   English   中英

如何使用星號匹配Javascript中的多數字正則表達式

[英]How to Match Multi-Digit Regex In Javascript Using the Star

我正在嘗試從JavaScript中的字符串中提取非數字開頭的多位數,但是遇到了麻煩。 例如,我要從“ B32是地板”中獲取“ 32”。

var str = "B23 is the floor."
var num = str.match(/\d*/);
$("#result").append(Object.prototype.toString.call(num) + ', ');
$("#result").append(Object.prototype.toString.call(num[0]) + ', ');
$("#result").append(num[0] + ', ');
$("#result").append(num[0].length);

返回:

Result:[object Array], [object String], , 0

num [0]似乎是一個空字符串。

由於某種原因,正則表達式/ \\ d * /無法正常運行。 我已經嘗試過/(\\ d) /,/(\\ d)* /,/ [0-9] /和其他一些合理且不合理的事情,但似乎不起作用。

如果您想看一下,這是我的jsFiddle: http : //jsfiddle.net/PLYHF/3/

問題在於正則表達式解析器是“惰性”的。 它會看到您的正則表達式完全正確,並且“什么都沒有”(因為*表示0或更大),所以任何東西都會通過。

而是嘗試/\\d+/ 這將強制至少有一位數字。

您要做的是匹配/ ^ 0-9 /,然后從返回的數組中獲取第二個值( Array[1] )。 這將包含第一組捕獲的內容。 最終看起來像這樣:

var str = "B23 is the floor."
var num = str.match(/[^0-9\s]([0-9]+)/);
$('#result').append(num[1]);

演示

parseInt(/[A-Z]+([0-9]+)/.exec('B23 is the floor.')[1]); // 23

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM