JavaScript 正则表达式不匹配

标签 javascript regex

我很难获得看似简单的正则表达式。我试图获取字符串中方括号之间最后一次出现的单词字符。我的代码:

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/

相关文章:

jquery - 插入随机 <script> 以使用 $(document).ready(function()});在 Joomla

javascript - Canvas 有时不会调整宽度和高度

javascript - 使用jQuery点击元素触发css :active

javascript - 从生成器迁移到异步/等待

javascript - 有没有更好的方法来清理字符串?

javascript - HTML5 检测对移动圆形元素的点击

regex - 我可以在正则表达式中使用 Or 运算符来验证输入吗?

Java reg-ex 获取 token ?

python - 根据python中的模式对字符串进行拆分和分组

java - 如何在Java中找到与正则表达式匹配的子字符串的开始和结束索引?