我尝试了几种方法,但我无法弄清楚为什么我的.match总是返回null。鉴于以下字符串,我如何将2017年6月4日提取到自己的变量中?
var str = "I need the only the date 04-Jun-2017\n"
str.replace(/\n/g,' ');
var date = str.match(/^[01][0-9]-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-\d{4}$/);
alert(date)
答案 0 :(得分:3)
首先,str.replace(/\n/g,' ');
不会修改str
var,因为字符串是不可变的。然后,您不需要锚点^
和$
,因为日期在字符串内部,它不等于字符串本身。此外,您需要匹配从1
到31
的天数,但[01][0-9]
仅匹配从00
到19
的匹配。
您可以考虑使用
var str = "I need the only the date 04-Jun-2017\n"
var date = str.match(/\b\d{1,2}-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-\d{4}\b/i);
if (date) {
console.log(date[0]);
}

锚点替换为单词边界\b
,日期部分更改为\d{1,2}
,匹配任何1或2位数字。 i
修饰符会使模式不区分大小写。
答案 1 :(得分:0)
首先,你应该更清楚你的问题。 第二,这可能是答案
var str = "I need the only the date 04-Jun-2017\n"
var result = str.replace('I need the only the ','');
alert(result);
看看.replace(valueToSearch,valueToReplace)
函数如何需要两个参数,首先是要替换的文本,所以你放入其中的内容将在字符串内搜索,第二个参数是它将替换它的值,所以,如果你想摆脱它,只需放一个空字符串。