內浮點返回的數值這是一個例子字符串正則表達式的括號
var s = "some text 123 [Price $20.99] some other text";
我希望得到任何數值與小數點一起放在方括號內。
我已經試過是
s.match(/\d+.\d+/);
,結果是123,20.99,但我不希望它來獲取數字括號外
誰能告訴我什麼,我做錯了什麼?
內浮點返回的數值這是一個例子字符串正則表達式的括號
var s = "some text 123 [Price $20.99] some other text";
我希望得到任何數值與小數點一起放在方括號內。
我已經試過是
s.match(/\d+.\d+/);
,結果是123,20.99,但我不希望它來獲取數字括號外
誰能告訴我什麼,我做錯了什麼?
歡迎的正則表達式的世界!
正則表達式中的小數點是special character,如果您希望按字面順序匹配,則需要使用反斜槓(\
)將其轉義。
這對我的作品(在Chrome的JavaScript控制檯):
> var s = "some text 123 [Price $20.99] some other text";
> s.match(/\d+\.\d+/)[0];
"20.99"
如果你想專門只在方括號內進行搜索,那麼你需要添加這些呢;方括號也是特殊的,所以需要轉義。此外,如果想要允許括號和數字之間的內容,您還需要特別考慮到這一點。然後,您需要使用捕獲括號,這意味着您需要以與第一個簡單案例略有不同的方式訪問匹配。這個工作對我來說:
> var t = "Some text 123 and decimal number 12.34 and now [in square brackets 56.78] yada yada";
> t.match(/\[.*?(\d+\.\d+).*?\]/)[1]
"56.78"
讓我穿行在正則表達式與您:
\[
字面括號.*?
除換行符,零次或多次,不貪婪(
開始拍攝\d+
編號,一次或多次\.
字面點\d+
數,除了換行符一次或多次)
端捕獲.*?
任何字符,零次或多次,非貪婪\]
字面括號你得到一個數組作爲回報。數組元素0
會再次被整體匹配,數組元素1
是第一次捕獲的內容。
不客氣!樂於幫助! :)保持彎曲的正則表達式肌肉!https://xkcd.com/208/ –
我得到這個工作
s.match(/\[*(\d+.\d+)\]/)[1]
必須去'/ \ [。*(\ d +。\ d +)。* \] /'幾乎不能匹配第一個數字 – megawac
的開始,因爲我得到了這個工作's.match(/ [*(\ d +。\ d +)\] /)[1]' – AZee