0

我对正则表达式有一个非常基本的了解,并且发现这很难实现。

有一个 html select 有很多这样的选项

<select>
  <option value="%001% 25cm Single" label="%001% 25cm Single">%001% 25cm Single</option>
  <option value="%002% 25cm Single" label="%002% 25cm Single">%002% 25cm Single</option>
  <option value="%003% 25cm Single" label="%003% 25cm Single">%003% 25cm Single</option>
</select>

%001%、%002% 等将用于订购选项,开盘 % 和闭盘 % 以及它们之间的内容也需要从前端隐藏。但是,在完成上述任何操作之前,需要使用正则表达式获取 %xxx%。

因此,似乎需要匹配以 % 开头的字符串的每个选项的第一次出现,然后是任意 3 位数字,然后是另一个 %。% 之间的数字是订购时需要返回的数字

还需要一个正则表达式规则来匹配并返回 % 和 3 之间的数字,以便可以使用 jquery 从前端隐藏它们。

到目前为止我有

/^%.{3}%/

所有帮助表示赞赏

4

2 回答 2

0

通常,要查找直到另一个停止字符之前的所有字符,您可以使用以下任一方法:

/[^%]+/ // One or more characters which are not a % character
/.+?%/  // One or more non-newline characters, as few as possible, up to a %

因此,要查找 a%之后的任何内容直到 next %,您可以使用:

/%[^%]+%/
/%.+?%/

但是,如果您知道必须始终恰好是三个数字字符,那么您应该使用该(更具限制性的)正则表达式:

/%\d{3}%/

如果您想保留匹配的任何部分以供单独参考,请将其括在括号中使其成为“捕获”。每个捕获将作为返回的数组的一个单独部分出现String.prototype.match

var marker = /%(\d{3})%/;
var string = "%001% 25cm Single";
var results = string.match(marker);
var number  = results && results[1]; // "001"
于 2012-10-29T16:20:45.293 回答
0

获得 %123% 零件使用:%[\d]{3}%

于 2012-10-29T16:11:32.310 回答