正则表达式获取两个字符之间的所有内容

23

我需要获取方括号 [ 和 ] 之间的内容,即使有其他相同字符,我也需要获取第一个 [ 和最后一个 ] 之间的内容。在使用 jQuery 的正则表达式中实现这个功能。

感谢您的提前帮助。

1
为什么选择jQuery?你是从字符串中提取它吗?还是其他原因? - Denys Séguret
@Tafari 在 "bla[this should[be]included]not this" 上进行测试。 - Denys Séguret
2个回答

42

不需要使用jQuery,使用标准的Javascript即可:

var extract = str.match(/\[(.*)\]/).pop();

如果你的分隔符是 { 和 },请将其更改为

var extract = str.match(/{(.*)}/).pop();

它运行得很好,谢谢。您能否为符号{和}编写相同的内容,因为有一些相同的字符,我无法理解需要更改哪个以获取其他字符内部的内容。请提供一个好的正则表达式教程链接。 - Paul Adam Harrison
2
@PaulAdamHarrison (.*) 基本上是指“尽可能捕获多个字符”。如果你想捕获 {} 而不是 [],那么将 [ 替换为 {,将 ] 替换为 }。一个好的正则表达式教程(完全免费)是 http://www.regular-expressions.info/。 - Nzall
@dystroy,就你的例子而言:bla[this should[be]included]not this,你捕获了[this should[be]included],这不是BETWEEN,而是_"从第一个 [ 到最后一个 ] 的文本"_。只是想说我没有使用JQuery,也许这就是区别所在,因为我真的不理解你正则表达式中的/ - Tafari
1
@Tafari 我建议你阅读一些关于 JavaScript 正则表达式的教程,例如这个。这是一个关于 JavaScript 的问题,而不是关于 gskinner 的问题。 - Denys Séguret
1
@dystroy,我把你的正则表达式放到“JavaScript编辑工具”中,它可以正常运行...嗯,我通常不使用JavaScript,所以当它正确捕获字符串时,我有点惊讶,例如C#就会失败。无论如何,感谢链接和答案+1。 - Tafari
显示剩余8条评论

1

怎么样呢?

yourStringVariable.match(/\[(.*)\]/)[1]

现在我需要检测我的字符串是否以 [button ... 开头。 - Paul Adam Harrison
@PaulAdamHarrison 请问您还有其他问题吗?或者更好的方法是先进行一些搜索。 - Denys Séguret
你能否给我推荐一个好的正则表达式教程的链接? - Paul Adam Harrison
nzal刚刚给出了最常用的教程链接。 - Denys Séguret

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接