Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.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,我有一些字符串如下: 123a-124b.csv 123a_124b.csv 123-124b.csv 123_124.csv 我只需要用一个正则表达式匹配数字,所以我用javascript尝试了这两个正则表达式: /^(\d+)\w*(?:.(\d+)\w*)?\.CSV$/i /^(\d+)\w*(?:[-|_](\d+)\w*)?\.CSV$/i 在此基础上运行exec将为-提供正确的结果,但\uuu匹配,但为第二个命名组返回未定义。事实上,第一个正则表达式可以处理除\uu之外的任何字

我有一些字符串如下:

123a-124b.csv
123a_124b.csv
123-124b.csv
123_124.csv
我只需要用一个正则表达式匹配数字,所以我用javascript尝试了这两个正则表达式:

/^(\d+)\w*(?:.(\d+)\w*)?\.CSV$/i
/^(\d+)\w*(?:[-|_](\d+)\w*)?\.CSV$/i
在此基础上运行
exec
将为
-
提供正确的结果,但
\uuu
匹配,但为第二个命名组返回
未定义。事实上,第一个正则表达式可以处理除
\uu
之外的任何字符。例如
123a=123b.csv
工作正常

你知道怎么了吗

更多示例输出:

var TEST = /^(\d+)\w*(?:.(\d+)\w*)?\.CSV$/i;
> undefined
TEST.exec('123a_123b.csv')
> ["123a_123b.csv", "123", undefined]
TEST.exec('123a+123b.csv')
> ["123a+123b.csv", "123", "123"]
TEST.exec('123a=123b.csv')
> ["123a=123b.csv", "123", "123"]
TEST.exec('123a?123b.csv')
> ["123a?123b.csv", "123", "123"]
试试这个。看演示

正则表达式的问题是
^(\d+)\w*(?:\(\d+)\w*)?\.CSV$

                               ^^^  
这个
\w*
将消耗一切,而第二组将永远没有机会上场。将
\w
更改为
[a-zA-Z0-9]
以排除
\uu
匹配,因为它在这里充当第二组的代理

试试这个。看演示

正则表达式的问题是
^(\d+)\w*(?:\(\d+)\w*)?\.CSV$

                               ^^^  
这个
\w*
将消耗一切,而第二组将永远没有机会上场。将
\w
更改为
[a-zA-Z0-9]
以排除
\uu
匹配,因为它在这里充当第二组的代理

试试这个。看演示

正则表达式的问题是
^(\d+)\w*(?:\(\d+)\w*)?\.CSV$

                               ^^^  
这个
\w*
将消耗一切,而第二组将永远没有机会上场。将
\w
更改为
[a-zA-Z0-9]
以排除
\uu
匹配,因为它在这里充当第二组的代理

试试这个。看演示

正则表达式的问题是
^(\d+)\w*(?:\(\d+)\w*)?\.CSV$

                               ^^^  
这个
\w*
将消耗一切,而第二组将永远没有机会上场。将
\w
更改为
[a-zA-Z0-9]
以排除
\uu
匹配,因为它在这里充当第二组的代理