繁体   English   中英

Javascript正则表达式与我的字符串不匹配

[英]Javascript Regex doesn't match with my String

我有以下字符串:

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

以下代码负责检查与Regex匹配的String:

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

在这种情况下,我的正则表达式中有一个错误,因为我总是得到“ false”。 我的错误在哪里?

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

([ \w-]*: )?

由于它是可选的,所以没关系,因为它被所有包容性捕获

(.+)

如果您尝试将[UT]部分与其分隔符进行匹配,则它看起来像这样

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

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

\((\d+,\s)*(\d+)\)

如果您需要更具体的信息,则必须更具体地确定匹配的模板,而不是具体情况。 但是我能用您提供的最好的方法是

^(\[\w\][\s\-]*)?(.+)\((\d+,\w)*(\d+)\)Rerun

我会根据您要寻找的内容推荐以下模式:

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

这将强制所有捕获组存在,即使它们为空,也将允许多个编号,然后Rerun如您所愿。

var resultRE = /\((\d+)(?:, (\d+))?(?:, (\d+))?\)Rerun/;
if (resultRE.test(resultLine)) {
  var num1 = RegExp.$1,
  num2 = RegExp.$2,
  num3 = RegExp.$3;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM