我正在尝试从用于格式化数字的字符串中获取三个结果。
var reg = /[0#-,().]+/;
var str = 'Label1(##,###.00)Label2';
var f = regex.exec(str)[0];
这将与(##,###.00)
匹配,但如果存在,我还希望获取Label1
和Label2
。如果正则表达式总是返回三个数组,那将是理想的。
字符串的一部分将始终与字符0#-,().
匹配。另外一个特例是Label1(##,###.00)Label2(00)
,其中第二个(00)
字符集将成为标签Label2(00)
的一部分
输入字符串的更多示例。我有三个我想填写的变量叫做左,正确和格式。
0 : left = '', right = '', format = '0'
0.00 : left = '', right = '', format = '0.00'
##.00 : left = '', right = '', format = '##.00'
(0.0) : left = '', right = '', format = '(0.0)'
RandomText##.00 : left = 'RandomText', right = '', format = '##.00'
RandomText#,###.00MoreRandomText : left = 'RandomText', right = 'MoreRandomText', format = '#,###.00'
答案 0 :(得分:0)
尝试:
var reg = /(Label\d)([0#-,().]+)(Label\d([0#-,().]+)?)/
您将获得三个捕获组,第一个和第三个将是Label后跟一个数字,最后一个将是您的字符集,可选地作为标签的一部分,(我假设它是相同的字符集)
答案 1 :(得分:0)
试试这个
var regex = /(Label1(\(\d+\))?)([0#-,().]+)(Label2(\(\d+\))?)/;
它还将捕获您为Label1提到的特殊情况。 你可以尝试一下 online regex tester
使用字符串:" Label1(111)(##,###。00)Label2(00)" (没有' /'在正则表达式中)