Javascript RegExp - 我正在斗鸡眼

Javascript RegExp - I'm getting cross-eyed

本文关键字:斗鸡眼 RegExp Javascript      更新时间:2023-09-26

这看起来很简单,但我就是做不好。

我正在尝试将参数解析为函数,即(a) 带有嵌入 WIDTHxHEIGHT 的文件名 --或 --(b) 没有宽度x高度的文件名 --或--(c) 只是一个宽度x高度

似乎我应该能够用一个单一的正则表达式来做到这一点......

// PROCESS CORRECT SYNTAX
chopUp("abc300x150.jpg");   // should return:  abc, 300, 150, .jpg   - works
chopUp("abc.jpg");          // should return:  abc,    ,    , .jpg   - doesn't work
chopUp("300x150");          // should return:     , 300, 150,        - works
// PROCESS "IN-CORRECT" SYNTAX
chopUp("abc300x.jpg");      // should return:  abc300x,    ,    , .jpg   - doesn't work
chopUp("abcx150.jpg");      // should return:  abcx150,    ,    , .jpg   - doesn't work

function chopUp(str) {
  var m = str.match(  /(.*?)(?:('d{2,5})x('d{2,5})*)((?:'..{3,4})*)/  );
  if (m != null) {
    console.log("Prefix: " + m[1] + "'nWidth: " + m[2] + "'nHeight: " + m[3]  + "'ndotExt: " + m[4] + "'n");
  } else {
    console.log("m is null");
  }
  return(m);
} // function chopUp

怎么样:

var m = str.match(  /^(.*?)(?:('d{2,5})x('d{2,5}))?('..+?)$/  );