我正在教自己JS正则表达式并正在进行一系列练习。其中之一是选择具有正确日期格式的字符串。我发现捕获我感兴趣的格式的表达式如下:\ d {2} [ - /。] \ d {2}( - /。\ b
在我用于测试目的的文本编辑器中,它工作得很好。在我写的javascript程序中,它捕获了所需的日期,但也捕获了年份。因此,如果我输入12.25.2001,我会得到[" 12.25.2001"," 2001",index:0,输入:" 10.20.1990"]。这有点奇怪,有两个原因。 1)" 2001"到目前为止,我不能选择正则表达式的形式。 2)全局标志未启用,因此它应该只显示第一个找到的结果。
进一步增加陌生感的事实是,当我启用全局标志时,我只得到一个结果:[" 12.25.2001"]。我一定错过了一些明显的东西。我在下面提供了我的代码的相关部分。任何帮助将非常感激。再一次 - 我可以得到正确的结果。我想知道为什么包括/ g标志有效并且不使用它没有(当看起来情况恰好相反时)。
var s = mainText.value;
var r = /\d{2}[-/\.]\d{2}[(-/\.](\d{4}|\d{2})\b/g;
var x = s.match(r);
console.log(x);
if (x) {
output.value = "Great! It's a date then!"
}
else {
output.value = "Please enter a legitimate date..."
}