给定以下字符串如何捕获直到第一个[^ \ s] +或“.mkv”?
" ss s.mkv ss.sss.sss s..sss. ".match(/.+\.[^\s]+/)
返回整个字符串。我需要的是:
ss s.mkv
答案 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;
正则表达式^([^.]+\.\S+)[\s\S]*
匹配:
^
- 字符串开头([^.]+\.\S+)
- 第1组(进一步引用$1
)匹配除点([^.]+
)以外的一个或多个字符,后跟文字.
,后跟一个或更多非空白字符(\S+
)[\s\S]*
- 包含换行符的零个或多个字符(直到字符串的结尾)。