У меня есть несколько строк, как это:Regex возвращает неопределенное значение с группой подчеркивания
123a-124b.csv
123a_124b.csv
123-124b.csv
123_124.csv
мне нужно соответствовать номерам только с регулярным выражением, поэтому я попробовал эти 2 с регулярными выражениями JavaScript:
/^(\d+)\w*(?:.(\d+)\w*)?\.CSV$/i
/^(\d+)\w*(?:[-|_](\d+)\w*)?\.CSV$/i
Выполняется exec
, что дает правильный результат для -
, но соответствует _
, но возвращает undefined for the second named group
. На самом деле первое регулярное выражение работает с любым символом, кроме _
. Например, 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"]