Javascript Regex没有'我的字符串不匹配

Javascript Regex doesn't match with my String

本文关键字:我的 字符串 不匹配 Regex 没有 Javascript      更新时间:2023-09-26

我有以下字符串:

var resultLine= "[UT] - GSM incoming call : STEP 1 - Simulate reception from server (1)Rerun3713 msAssertion ok"

下面的代码负责检查与Regex匹配的字符串:

var resultRE = /^([ 'w-]*: )?(.+) '(('d+), ('d+), ('d+)')Rerun/;
var resultMatch = resultLine.match(resultRE);
if (resultMatch) {
   return true;
} else {
   return false;
}

在这种情况下,我的Regex中有一个错误,因为我总是得到"false"。我的错误在哪里?

根据您想要的内容,我推荐以下模式:

var resultRE = /^(['[ 'w']-]*: )(.+) '(([0-9, ]*)')Rerun(.*)$/

这将强制所有捕获组存在,即使它们是空的,并且将允许在Rerun之前有多个数字,正如您所期望的那样。

这与字符串中的任何内容都不匹配

([ 'w-]*: )?

由于它是可选的,这并不重要,因为它会被包罗万象的捕获

(.+)

如果你试图将[UT]部分与它的分隔符相匹配,它会看起来像这个

('['w+']['s'-]*)?

如注释中所述,括号中只有一个数字,但正则表达式需要三组数字,用逗号分隔。这将允许任何数量的数字,无限期地用逗号分隔(我不知道是否有限制)。

'(('d+,'s)*('d+)')

如果你需要更具体的东西,你必须更具体地说明你匹配的模板,而不是具体的案例。但我能想到的最好的是你提供的

^('['w']['s'-]*)?(.+)'(('d+,'w)*('d+)')Rerun
var resultRE = /'(('d+)(?:, ('d+))?(?:, ('d+))?')Rerun/;
if (resultRE.test(resultLine)) {
  var num1 = RegExp.$1,
  num2 = RegExp.$2,
  num3 = RegExp.$3;
}