我很难获得看似简单的正则表达式。我试图获取字符串中方括号之间最后一次出现的单词字符。我的代码:
pattern = /\[(\w+)\]/g;
var text = "item[gemstones_attributes][0][shape]";
if (pattern.test(text)) {
alert(RegExp.lastMatch);
}
当我希望上面的代码输出“shape”时,它输出“gemstones_attributes”。为什么这个正则表达式不起作用,或者我获取最后一个匹配的方法有问题?我确信我犯了一个明显的错误 - 正则表达式从来都不是我的字符串套装。
编辑: 在某些情况下,字符串不会以右括号终止。
最佳答案
您可以在模式之前尽可能多地进行贪婪匹配,这将导致您的组仅匹配最后一个匹配:
pattern = /.*\[(\w+)\]/g;
var text = "item[gemstones_attributes][0][shape]";
var match = pattern.exec(text);
if (match != null) alert(match[1]);
关于JavaScript 正则表达式不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12067071/