Javascript Regex获取2个字符和所有字符

时间:2012-10-29 16:01:08

标签: javascript regex

我对Regex有一个非常基本的了解,并且发现这很难实现。

有一个html选择,有很多选项,比如这个

<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}%/

所有帮助表示赞赏

2 个答案:

答案 0 :(得分:0)

获取%123%部分使用:%[\d]{3}%

答案 1 :(得分:0)

通常,要查找所有字符,直到另一个停止字符,您可以使用:

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

因此,要找到%后跟下一个%的任何内容,您可以使用以下任一项:

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

但是,如果你知道必须总是有三位数的字符,那么你应该使用那个(更严格的)正则表达式:

/%\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"