Язык сценариев Flex, ActionScript, является реализацией ECMAScript, такой как JavaScript, поэтому литералы регулярных выражений должны быть разделены косыми чертами, например: /^(?:\d+B)?(?:\d{1,3}M)?(?:\d{1,3}T)?(?:\d{1}H)?(\.[0-9]*)?/
.
Но у этого регулярного выражения есть некоторые проблемы. Во-первых, вы не учитываете знак минус или две цифры после сотен. И, хотя десятичная точка может быть необязательной, если она равна , вам нужно, чтобы за ней следовала хотя бы одна цифра (поэтому +
, а не *
в этой последней группе).
Наконец, вам нужно захватить различные компоненты, чтобы вы могли использовать их для построения числа. Вот мой результат:
/^(-?)(?:(\d+)B)?(?:(\d{1,3})M)?(?:(\d{1,3})T)?(?:(\d)H)?(\d{0,2})(\.\d+)?$/
Знак минус, если он присутствует, будет зафиксирован в группе $1
. Остальные компоненты будут в группах от $2
до $7
. Вы можете использовать их в функции обратного вызова для создания номера. Также обратите внимание, что все в этом регулярном выражении не является обязательным; он будет соответствовать пустой строке или просто дефису, поэтому вам нужно проверить это.