【问题标题】:Javascript Regex to get 2 characters and all characters betweenJavascript Regex 获取 2 个字符和之间的所有字符
【发布时间】:2012-10-29 16:01:07
【问题描述】:

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

感谢所有帮助

【问题讨论】:

  • 只是好奇您为什么要“订购”这些选项。这些选项将按照您在 HTML 源中输出它们的顺序进行排序,那么为什么需要在源中提供 order 标记?
  • .将匹配任何东西。在这种情况下,您想要的是 \d: /%\d{3}%/ 因为在记住使用量词时我是个笨蛋,我实际上会输入 /%\d\d\d%/这个案例。

标签: javascript regex


【解决方案1】:

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

【讨论】:

  • 不需要字符类;正则表达式 %\d{3}% 是等价的。
  • 是的,我确实在写 %[0-9]{3}% ;)。谢谢
【解决方案2】:

一般来说,要查找直到另一个停止字符之前的所有字符,您可以使用:

/[^%]+/ // 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"

【讨论】:

    猜你喜欢
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 2015-06-24
    • 1970-01-01
    相关资源
    最近更新 更多