为什么百分比未在以下正则表达式中匹配
10percentRule
输入字符串示例:
// Combine JavaScript into one file
// In production, the file is minified
function javascript() {
return gulp.src(PATHS.javascript)
.pipe($.sourcemaps.init())
.pipe($.babel())
.pipe($.concat('app.js'))
.pipe($.if(PRODUCTION, $.uglify()
.on('error', e => { console.log(e); })
))
.pipe($.if(!PRODUCTION, $.sourcemaps.write()))
.pipe(gulp.dest(PATHS.dist + '/assets/js'));
}
答案 0 :(得分:3)
/(^(:[\ d。] + |第一|第二|目标)?)?(?:<强> \ W + 强>(间隔|百分比))/ I
w +是这里的问题:你应该使用w *,w +表示1或更多匹配,而w *表示0或更多匹配;在您的示例中,第一组捕获数字位数,然后搜索至少1个字符(w +)的间隔或百分比,因此,它不返回任何匹配。
改用w *,甚至用w *? (不贪心),所以它会在找到间隔或百分比时停止搜索字符
/(^(?:[\d.]+|first|second|goal))(?:\w*?(interval|percent))?/i
答案 1 :(得分:2)
它不匹配,因为\w+
在10
和percent
之间至少需要1个字词。将+
(一次或多次出现)替换为*
(零次或多次出现):
(^(?:[\d\.]+|first|second|goal))(?:\w*(interval|percent))?
^
它会起作用。
请参阅regex demo