javascript - 使用 javascript 查找最后一次出现的字符

标签 javascript regex magento

我想知道如何从这段代码中获取“widget”表达式:

blablablalbadsj kds {{widget type="Magento\FooBard\Block\Widget\Script" wysywig_text="<img src='{{media url='wysiwyg/something.png'}}' alt='' />"}} ksakkdkkcxz {{media url='wysiwyg/something2.png'}}

最后,我想要这样:

{{widget type="Magento\FooBard\Block\Widget\Script" wysywig_text="<img src='{{media url='wysiwyg/something.png'}}' alt='' />"}}

我一直在思考这个问题,我有这样的正则表达式:

/\{\{widget(.*?)\}}/

但这不起作用,它只是匹配:

{{widget type="Bold\Gtm\Block\Widget\Script" wysywig_text="<img src='{{media url='wysiwyg/compare_brightness.png'}}

不带:alt=''/>"

最佳答案

我的建议是不要使用正则表达式,因为该字符串不规则。因此尝试使用正则表达式解析它将会非常困难。

var str =`blablablalbadsj kds {{widget type="Magento\FooBard\Block\Widget\Script" wysywig_text="<img src='{{media url='wysiwyg/something.png'}}' alt='' />"}} ksakkdkkcxz {{media url='wysiwyg/something2.png'}}`

var startWdigetPos = str.indexOf("{{widget"),endWidgetPost = 0;
const regex = /{{|}}/mg;


var openedTags=0;
var closedTags=0;
while ((m = regex.exec(str.substr(startWdigetPos))) !== null) {
      // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    if (m[0]=="{{"){
      openedTags++;
    }else if (m[0]="}}"){
      closedTags++;
      
    }
    if (openedTags === closedTags){
     endWidgetPost = regex.lastIndex ;
     break;
    }
    
}
if (endWidgetPost){
  console.log(str.substr(startWdigetPos,endWidgetPost));
}

关于javascript - 使用 javascript 查找最后一次出现的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42038403/

相关文章:

magento - Magento结构 block ,内容 block 和phtml模板

javascript - 在鼠标悬停时突出显示图像的一部分

javascript - 在 javascript 中设置 CSS 渐变?

java - 字符串匹配的效率,Equals 与 Matches 方法

javascript - 创建正则表达式以用单引号替换输入值中的 href

php - REGEX 是否与 PHP 和 Python 不同

php - 如何在 magento 中获取可配置的产品价格范围?

javascript - NodeJS 交互式 Twitter 机器人问题

javascript - 如何在 Google Apps 脚本中访问解析嵌套 JSON 中的对象

magento - 将产品添加到购物车之前如何在 magento 产品 View 中应用优惠券