Javascript正则表达式不';与我的线不匹配

Javascript正则表达式不';与我的线不匹配,javascript,regex,Javascript,Regex,我有以下字符串: var resultLine= "[UT] - GSM incoming call : STEP 1 - Simulate reception from server (1)Rerun3713 msAssertion ok" 以及负责检查与正则表达式匹配的字符串的以下代码: var resultRE = /^([ \w-]*: )?(.+) \((\d+), (\d+), (\d+)\)Rerun/; var resultMatch = resultLine.match(re

我有以下字符串:

var resultLine= "[UT] - GSM incoming call : STEP 1 - Simulate reception from server (1)Rerun3713 msAssertion ok"
以及负责检查与正则表达式匹配的字符串的以下代码:

var resultRE = /^([ \w-]*: )?(.+) \((\d+), (\d+), (\d+)\)Rerun/;
var resultMatch = resultLine.match(resultRE);
if (resultMatch) {
   return true;
} else {
   return false;
}
在这种情况下,我的正则表达式中有一个错误,因为我总是得到“false”。
我的错误在哪里?

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

var resultRE = /\((\d+)(?:, (\d+))?(?:, (\d+))?\)Rerun/;
if (resultRE.test(resultLine)) {
  var num1 = RegExp.$1,
  num2 = RegExp.$2,
  num3 = RegExp.$3;
}
([ \w-]*: )?
因为它是可选的,所以这并不重要,因为它会被包含所有内容的

(.+)
如果您试图将
[UT]
部分与其分隔符匹配,它将如下所示

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

如果您需要更具体的内容,则必须更具体地说明匹配的模板,而不是具体的案例。但我能想到的最好的办法是

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

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

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


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

您的字符串与模式几乎没有相似之处。为什么您希望它匹配?对于初学者来说,似乎您正试图在其中找到
(NUM,NUM,NUM)Rerun
,但您的源字符串只有
(NUM)Rerun
。如果您解释模式的确切含义,这会有所帮助。
(1)!=\((\d+)、(\d+)、(\d+)
我认为您的第二个regexp可能需要在转义的
[
]
之外有破折号和可选间距,如果我正确地读取了源代码行……我认为破折号不需要转义到末尾,但至少您是对的。至于括号,它们逃逸了,我只是忘了去掉冒号。感谢您的输入我的意思是要匹配的行中的破折号出现在
[
]
周围
UT
部分的外面。。。可能是类似于
(\[\w\]\s*-)?
?哦,我明白你的意思了。我没有注意到为什么一开始就有短跑。我想允许行以“-”开头是没有意义的。在您的例子中,确实需要在character类中转义破折号(因为它在这里被解释为一个范围)。由于OP是如此模糊,我不知道它是否重要,但第一组将匹配“UT[[]”之类的内容。然而,这符合所提供的内容。
^(\[\w\][\s\-]*)?(.+)\((\d+,\w)*(\d+)\)Rerun