簡體   English   中英

JavaScript正則表達式空白

[英]JavaScript regex whitespace

運行以下JavaScript代碼,例如,成功找到“ 12 December”。

return messageHtmlBody.match(/[1-31]{1,2}(\s)[a-zA-Z]{3,9}/i)[0];

我想返回“ 2012年12月12日”,因此嘗試了以下代碼:

return messageHtmlBody.match(/[1-31]{1,2}(\s)[a-zA-Z]{3,9}(\s)\d{4}/i)[0];

這不僅沒有返回匹配,而且代碼甚至沒有成功運行。 我也嘗試了以下操作(僅第二個(\\ s)字符),但均未運行:

return messageHtmlBody.match(/[1-31]{1,2}(\s)[a-zA-Z]{3,9}(\s)/i)[0];

第二個(\\ s)不起作用是有原因的嗎? 第一個(\\ s)成功匹配第一個空格。 搜索字符串100%包含字符串“ 2012年12月12日”,因此找到它應該不是問題。

有任何想法嗎?

[1-31]不是“ 1到31之間的數字”的有效正則表達式。 它所做的就是接受1,2,3中的任何一個,並且(帶量詞)接受11,12,13,21,22,23,31,32,33中的任何一個。

相反,它應該是(?:3[01]|[1-2][0-9]|[0-9])

同樣,在\\s周圍加上括號也是不必要\\s

更具體地講,您還可以明確說明使用什么月份:

(?:(?:jan|febr)uary|march|april|may|june|july|august|(?:(?:sept|nov|dec)em|octo)ber)

[1-31]{1,2}與您想要的不符。 它等效於[1-3]{1,2}

您可以使用regexpal等正則表達式工具測試您的表達式。

暫無
暫無

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

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