5

有没有可能从这个:

美国专利 6,570,557

检索 3 个组:

  1. 我们
  2. 专利
  3. 6570557(不带逗号)

到目前为止,我得到了:

(US)(\s{1}Patent\s{1})(\d{1},\d{3},\d{3})

并试图(?!,)摆脱逗号然后我有效地摆脱了整个数字。

4

4 回答 4

10

尝试:

var input   = 'US Patent 6,570,557',
    matches = input.match(/^(\w+) (\w+) ([\d,]+)/),

    code = matches[1],
    name = matches[2],
    numb = matches[3].replace(/,/g,'');
于 2013-01-22T13:47:37.467 回答
2

您可以使用 2 个简单的函数来代替使用正则表达式:

var str = "US Patent 6,570,557"; // Your input
var array = str.split(" "); // Separating each word
array[2] = array[2].replace(",", ""); // Removing commas
return array; // The output

这也应该更快。

于 2013-01-22T13:57:05.030 回答
1

匹配时不能忽略逗号,除非将数字匹配为三个单独的部分,然后将它们连接在一起。

最好从匹配结果中的数字中去除分隔符,使用String.replace.

于 2013-01-22T13:47:19.667 回答
0

只需添加更多组,如下所示:

(US)(\s{1}Patent\s{1})(\d{1}),(\d{3}),(\d{3})

然后连接最后3组

于 2013-01-22T13:49:01.810 回答