我对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}%/
所有帮助表示赞赏
答案 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"