0

我正在尝试弄清楚是否可以将两种模式聚合到一个模式中。

所以我的输入可能是这样的:

input = "200px"
input = "200pt"

我的预期输出是result = ["200","pt"]["200","px"]

var result = input.match(/[^pt]+|pt/g)

任何人都知道是否有可能以单一模式、句柄ptpx后缀形式出现?

解决了

result = input.match(/^([0-9]+)(px|pt)$/).slice(1);

或者

result = input.match(/^([0-9]+)((p[xt]|r?em)).slice(1); 

多谢你们

4

2 回答 2

3

您可以使用捕获组:

input.match(/(\d+)(p[tx])/)
// -> Array ["200px", "200", "px"]

要获得result您想要的确切信息(不匹配整个字符串),您可以splitp:

input.split(/(?=p)/)
// -> Array ["200", "px"]
于 2013-08-28T15:51:57.097 回答
0

你可以这样做:

var input = "200px"; // or 200pt;
var result = input.match(/^([0-9]+)(px|pt)$/);
// result: ["200px", "200", "px"]
result = result.slice(1); // ["200", "px"]

英语正则表达式:

  • ^从字符串的开头开始。
  • ([0-9]+)匹配 1 个或多个数字并捕获它们。
  • (px|pt)匹配pxpt捕获它。
  • $end 必须在字符串的末尾。
于 2013-08-28T15:45:27.520 回答