Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式解析字符串_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式解析字符串

Javascript 正则表达式解析字符串,javascript,regex,Javascript,Regex,我有一个字符串,看起来像: 2d 1m 5h 我想解析它并获取数组: [2, 'd'] [1, 'm'] [5, 'h'] 我编写了regexp: var r = /^(\d)([mhd])$/; var res = r.exec("2m"); console.log(res); 它输出:[“2m”、“2”、“m”] 正如你们所看到的,第一项是多余的。 如何正确地编写它?js regex.exec将把整个匹配作为结果数组的第一项。您可以使用索引获取捕获组。您已经正确地完成了。只需使用sli

我有一个字符串,看起来像:

2d
1m
5h
我想解析它并获取数组:

[2, 'd']
[1, 'm']
[5, 'h']
我编写了regexp:

var r = /^(\d)([mhd])$/;
var res = r.exec("2m");
console.log(res);
它输出:
[“2m”、“2”、“m”]

正如你们所看到的,第一项是多余的。
如何正确地编写它?

js regex.exec将把整个匹配作为结果数组的第一项。您可以使用索引获取捕获组。

您已经正确地完成了。只需使用slice()选择正确的零件

var r=/^(\d)([mhd])$/;
var res=r.exec(“2m”);
res=res.切片(1,3);

控制台日志(res)仅2个字符,使用索引为OK所有字符串都是2个字符吗,第一个是数字,第二个是字母?@passion你认为会快得多吗?@TimBiegeleisen是的,数字和字母,但数字可以是2个字符
str.match(/\d+|[mhd]/g)
@AvinashRaj:这只匹配第一个“2”。@bitfet是否添加了g标志?@AvinashRaj:是否编辑了您的评论?(我复制并粘贴了您的代码,没有错误:LOL:)。无论如何,您也在匹配不需要的输入。例如,
“2m4d”
将产生
['2','m','4','d']
,但它不应该匹配。如果是这种情况,那么如果输入是
12m
var r = /^(\d)([mhd])$/;
var res = r.exec("2m").slice(1, 3);
console.log(res);