使用正则表达式匹配字符串中的数字和文本

时间:2016-10-27 21:46:38

标签: javascript regex

为什么百分比未在以下正则表达式中匹配

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'));
}

2 个答案:

答案 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+10percent之间至少需要1个字词。将+一次或多次出现)替换为*零次或多次出现):

(^(?:[\d\.]+|first|second|goal))(?:\w*(interval|percent))?
                                     ^

它会起作用。

请参阅regex demo