正则表达式捕获三个字符串

时间:2014-05-12 12:52:00

标签: javascript regex

我正在尝试从用于格式化数字的字符串中获取三个结果。

var reg = /[0#-,().]+/;
var str = 'Label1(##,###.00)Label2';        
var f = regex.exec(str)[0];

这将与(##,###.00)匹配,但如果存在,我还希望获取Label1Label2。如果正则表达式总是返回三个数组,那将是理想的。

字符串的一部分将始终与字符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'

2 个答案:

答案 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)" (没有' /'在正则表达式中)