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

标签 javascript regex

我已经尝试了几种方法来做到这一点,但我不明白为什么我的 .match 总是返回 null。鉴于下面的字符串,我如何将 04-Jun-2017 提取到它自己的变量中?

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)

最佳答案

首先,str.replace(/\n/g,' '); 不会修改 str var,因为字符串是不可变的。然后,您不需要 anchor ^$,因为日期在字符串内部,它不等于字符串本身。此外,您需要匹配从 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]);
}

anchor 替换为单词边界 \b 并且日期部分更改为 \d{1,2} 匹配任何 1 位或 2 位数字。 i 修饰符将使模式不区分大小写。

关于Javascript 从字符串中提取正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44359610/

相关文章:

javascript - Web 动画 API - 不同的动画持续时间?

javascript - 是否可以使用用户脚本在将 'X-Frame-Options' 设置为 'SAMEORIGIN' 的页面(选项卡)之间进行通信?

javascript - 如何在加载网站内容时显示加载屏幕

javascript - jQuery scrollTop();有过渡

javascript - 我如何读取 first = sign 的值(或 middle = sign 的值)而不是最后一个值

python - 正则表达式替换Python中分隔符之间的文本

javascript - 如何等到 onload 事件在 JavaScript 中完成它的工作?

python - 如何比较两列中的字符串并将一列中的字符串大小写替换为另一列?

python - 使用正前瞻或后顾的增强赋值操作的正则表达式

PHP。替换字符串中的命名组