JavaScript正则表达式空白
例如,运行以下JavaScript代码可以成功找到“12月12日”JavaScript正则表达式空白,javascript,regex,Javascript,Regex,例如,运行以下JavaScript代码可以成功找到“12月12日” 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}/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,2}
与您想要的不匹配。它相当于[1-3]{1,2}
使用正则表达式工具测试表达式,如。
[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
周围加括号也没有必要
更具体地说,您还可以明确说明月份:
(?:(?:一月|二月|一月|三月|四月|五月|六月|七月|八月|)(?:(?:九月|十一月|十二月|十二月|十月|)ber)
与您的问题不太相关,但刚刚测试过,“32”。匹配(/[1-31]{1,2})/code>返回[“32”
,因此您可能需要重新考虑您的正则表达式。。。