JScript Regex - 提取 10 位增值税号,分隔符前面有一个子字符串

JScript Regex - extract 10-digit VAT number with seperators procedeed by a substring

我需要提取增值税号,它由 10 位数字组成,用破折号分隔,space 或不分隔,并由子字符串 'VAT' 继续。增值税号从不以零开头,并且始终后跟 space.

reg = new RegExp('[\d -]{10}\s','ig');
str = ('sdfgzdfvzdfv/9/2020 VAT Invoice 16-09-2020 Citsxc zzzzw34  224- Iscvcge date 16.09.2020 VAT Terms 34 of payment:  123-456-78-90 *')
expected result: '123-456-78-90'

谢谢。

您可以使用

var rx  = RegExp('VAT.*?([1-9](?:[\s-]?\d){9})(?!\S)','i');

regex demo。详情:

  • VAT - VAT 子字符串
  • .*? - 除换行字符外的任何 0+ 个字符,尽可能少
  • ([1-9](?:[\s-]?\d){9}) - 第 1 组:
    • [1-9] - 非零数字
    • (?:[\s-]?\d){9} - 出现 9 次空格或连字符,然后是数字
  • (?!\S) - 右侧空白边界。

JScript 代码演示:

var rx  = RegExp('VAT.*?([1-9](?:[\s-]?\d){9})(?!\S)','i');
var string=('sdfgzdfvzdfv/9/2020 VAT Invoice 16-09-2020 Citsxc zzzzw34 224- Iscvcge date 16.09.2020 VAT Terms 34 of payment123-456-78-90 ');
var m = string.match(rx);
if (m) {
  WScript.Echo(m[1]);
} else {
  WScript.Echo("No match!");
}

输出:123-456-78-90.