javascript - 非捕获组仍然捕获输入

标签 javascript regex

我有一个日期格式,可以按以下格式输入:

December, 13, 2016 
December , 13 , 2016
December    ,13    ,   2016 
.
.
.

所以我尝试匹配并捕获所有这些输入事件,最终得到如下结果:

December 13 2016

我的正则表达式如下所示:

str.match([a-zA-Z]+(?: |,)*[0-9]{1,2}(?: |,)*[0-9]+$)

相信我,在发布问题之前,我曾尝试在网络上寻找解决方案,但没有成功。有什么建议如何解决这个问题吗?

最佳答案

您必须捕获要提取的部分。例如,

matches = "December    ,13    ,   2016".match(/([a-zA-Z]+)[ ,]*([0-9]{1,2})[ ,]*([0-9]+)$/)
console.log(matches[1] + ' ' + matches[2] + ' ' + matches[3])
// December 13 2016
  • ([a-zA-Z]+) 捕获月份名称以匹配[1]
  • ([0-9]{1,2}) 捕获日期。
  • ([0-9]+) 捕获年份。
  • [ ,]*(?: |,) 相同,但没有使用字符类的组。

关于javascript - 非捕获组仍然捕获输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41121755/

相关文章:

javascript - 使用 navigator.getUserMedia (Javascript) 访问移动麦克风

php - 正则表达式删除空行,但保留新行

c# - 精确/文字单词或模式匹配正则表达式

regex - 将单词的一部分分配给变量

javascript - 对第三方 AJAX 负载执行某些操作

javascript - Javascript 中的事件处理程序作用域

javascript - Google Chrome v74 的设备事件返回未定义

javascript - Foundation 5 pinterest 风格的模态弹出窗口

regex - Mac 上的 sed : 'extra characters after p command'

javascript - 如何限制粘贴在 contenteditable 区域中的文本样式?