Javascript从字符串中提取正则表达式

时间:2017-06-04 22:58:48

标签: javascript regex

我尝试了几种方法,但我无法弄清楚为什么我的.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)

2 个答案:

答案 0 :(得分:3)

首先,str.replace(/\n/g,' ');不会修改str var,因为字符串是不可变的。然后,您不需要锚点^$,因为日期在字符串内部,它不等于字符串本身。此外,您需要匹配从131的天数,但[01][0-9]仅匹配从0019的匹配。

您可以考虑使用



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)函数如何需要两个参数,首先是要替换的文本,所以你放入其中的内容将在字符串内搜索,第二个参数是它将替换它的值,所以,如果你想摆脱它,只需放一个空字符串。