我正在试图弄清楚如何只抓取已知的开始和结束字符串之间的值。例如,使用此字符串:
I need [?Count?] [?Widgets?]
我需要返回值计数和小部件。
我试过
[?(。*)?]
最后以
结束I need [
Count
] [
Widgets
]
有没有办法,使用这些开始和结束字符串来解析我需要的值?或者我应该在解析值之前尝试找到更改它们的方法?我非常感谢您提供的任何帮助。
谢谢!
答案 0 :(得分:2)
var str = "I need [?Count?] [?Widgets?]";
$(str.match(/\[\?.*?\?\]/g)).map(function(i) { return this.match(/\[\?(.*)\?\]/)[1] });
// => ['Count'], 'Widgets']
请注意,在正则表达式中,您必须转义[
,]
和?
,因为它们是特殊字符。还可以使用正则表达式末尾的g
标志来查找所有匹配项。我也使用.*?
代替.*
- 这意味着非贪婪的匹配或“找到最短的匹配”,这就是你想要的。
最后,结果被映射(使用jquery map
)来删除'[?'和结果中的'?]'。
或者,如果您不想删除特殊字符,请不要使用地图:
var str = "I need [?Count?] [?Widgets?]";
str.match(/\[\?.*?\?\]/g);
// => ['[?Count?]'], '[?Widgets?]']
答案 1 :(得分:1)
在正则表达式中尝试\[\?([^\?]*)\?\]