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