var regex = /(\d{4})-(\d{2})-(\d{2})/; var string = "2017-06-12"; console.log( string.match(regex) );为啥最后只提取第一项的部分
时间: 2024-04-28 09:21:42 浏览: 3
在这段代码中,`console.log( string.match(regex) );` 输出的是 `string` 中与正则表达式 `regex` 匹配的部分。这个部分是一个数组,其中第一项是整个匹配成功的字符串,后面的每一项都是与正则表达式中的括号分组对应的子串。
因为这里的正则表达式中只有一个括号分组,所以 `string.match(regex)` 返回的数组只有两个元素。第一个元素是整个匹配成功的字符串 `"2017-06-12"`,第二个元素是与括号分组 `(\d{4})-(\d{2})-(\d{2})` 中第一个括号对应的子串 `"2017"`。
所以,如果只想要提取日期部分,可以通过数组下标访问到对应的子串,即 `string.match(regex)[0]` 表示整个匹配成功的字符串,`string.match(regex)[1]` 表示第一个括号分组对应的子串,也就是年份部分,`string.match(regex)[2]` 表示第二个括号分组对应的子串,也就是月份部分,`string.match(regex)[3]` 表示第三个括号分组对应的子串,也就是日期部分。
相关问题
var regex = /(\d{4})-(\d{2})-(\d{2})/
这是一个 JavaScript 正则表达式,用于匹配符合 "yyyy-mm-dd" 格式的日期字符串。其中:
- `\d` 表示匹配任意一个数字字符
- `{n}` 表示匹配前面的字符 n 次
- `()` 表示分组,可以将匹配结果进行分组,方便后续操作
因此,`(\d{4})-(\d{2})-(\d{2})` 表示匹配一个符合 "yyyy-mm-dd" 格式的字符串,其中:
- `(\d{4})` 表示匹配 4 个数字字符,即年份部分,并将这个部分作为第一个分组。
- `(\d{2})` 表示匹配 2 个数字字符,即月份部分,并将这个部分作为第二个分组。
- `(\d{2})` 表示匹配 2 个数字字符,即日期部分,并将这个部分作为第三个分组。
这样,在调用 `match()` 方法时,如果匹配成功,返回的数组第一个元素是匹配成功的字符串,后面的每个元素就是与每个分组对应的子串。
var regex = /(\d{4})-(\d{2})-(\d{2})/;
这也是一个正则表达式,用于匹配日期格式为"YYYY-MM-DD"的字符串。与之前的正则表达式不同的是,这个正则表达式使用了捕获组,即用小括号将要捕获的内容包含起来。其中,(\d{4})表示捕获4个数字字符,(\d{2})表示捕获2个数字字符,(\d{2})表示捕获另外2个数字字符。这样,在匹配成功之后,可以通过正则表达式的exec或match方法获取到捕获组中的内容,即年、月、日。