所以我很讨厌RegExes。仍然。

我正在用jQuery遍历一些HTML输入,并且在它们的name属性中,我只想用其中的“ anything”替换第一组方括号。

我有这些HTML输入:

<fieldset id="set">
    <input type="text" name="shift[305][sub_amount]" value="Snoopy" />
    <input type="text" name="shift[405][price]" value="12" />
    <input type="text" name="cost[insert_1392222118][amount]" value="Hoof" />
</fieldset>


我的目标是

<fieldset id="set">
    <input type="text" name="shift[replaced][sub_amount]" value="Snoopy" />
    <input type="text" name="shift[replaced][price]" value="12" />
    <input type="text" name="cost[replaced][amount]" value="Hoof" />
</fieldset>


所以我像这样遍历它们:

$('#set').find(":input").attr("name", function(index, element) {
    return element.replace(/\[[0-9]+\]/, function(match) {
        return '[replaced]';
    })
});


但是我的正则表达式只用数字数据修复方括号。

JSFiddle-example仅在方括号仅包含数字数据时解决该问题:
http://jsfiddle.net/XLnAC/

谁能告诉我使用哪个RegEx定位第一个带有方括号的方括号实例?

我发现了类似的问题,但没有有关如何仅查找第一个实例的详细信息。
Regular expression for detecting round or square brackets

最佳答案

您可以使用这个:

/\[[^\]]+\]/


您也不需要在这里使用函数:

return element.replace(/\[[^\]]+\]/, '[replaced]')

关于javascript - 正则表达式检测其中包含任何内容的第一组方括号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21734193/

10-12 01:38