如何匹配,直到第一次出现扩展模式

时间:2016-02-03 11:29:16

标签: javascript regex

给定以下字符串如何捕获直到第一个[^ \ s] +或“.mkv”?

"   ss     s.mkv ss.sss.sss    s..sss.   ".match(/.+\.[^\s]+/)

返回整个字符串。我需要的是:

  ss     s.mkv

2 个答案:

答案 0 :(得分:3)

使用non-greedy重复运算符:

"   ss     s.mkv ss.sss.sss    s..sss.   ".match(/.+?\.[^\s]+/)
//                                                  ^

或者,从匹配项中排除点也可以:

"   ss     s.mkv ss.sss.sss    s..sss.   ".match(/[^.\n]+\.[^.\s]+/)

答案 1 :(得分:0)

作为匹配的替代方法,以下是使用replace

的方法



var s = "   ss     s.mkv ss.sss.sss    s..sss.   ";
var result = s.replace(/^([^.]+\.\S+)[\s\S]*/, '$1');
document.body.innerHTML = "<pre>\"" + result + "\"</pre>";
&#13;
&#13;
&#13;

正则表达式^([^.]+\.\S+)[\s\S]*匹配:

  • ^ - 字符串开头
  • ([^.]+\.\S+) - 第1组(进一步引用$1)匹配除点([^.]+)以外的一个或多个字符,后跟文字.,后跟一个或更多非空白字符(\S+
  • [\s\S]* - 包含换行符的零个或多个字符(直到字符串的结尾)。