正则表达式结尾的替代方案

时间:2015-06-02 15:40:05

标签: javascript jquery regex

我有以下DOM结构:

<form>
<input type="text" id="a">
<button>Submit</button>
</form>

或:

<form>
<input type="text" id="a">
</form>

哪一个取决于用户做了什么,它是动态创建的。

我希望能够在前一个输入正下方添加另一个输入(它还不存在并且是第一个)。要做到这一点,我想得到所有文本,直到我添加新输入的地方。如何使用正则表达式获取该文本?

我尝试了以下内容:

'(.*?)[<button.*?>Submit<\/button><\/form>|<\/form>]'

但它不起作用,因为它会显示空字符串。

var afterRegex = new RegExp('(.*?)[<button.*?>Submit<\/button><\/form>|<\/form>]', 'i');
var appendAfter = $(".downloadCode textarea").val().match(afterRegex)[1];
alert(appendAfter);

2 个答案:

答案 0 :(得分:1)

我对你的代码感到有些困惑,但是,基于你所说的(以及你用jQuery标记了你的问题),我认为你可以用你的代码完成你想要做的事情:

var $newInput = **CREATE_YOUR_NEW_INPUT_ELEMENT_HERE**;
var $form = $("form");
var $lastInput = $form.find("input:last");

// no inputs, make the new input the first element in the form
if ($lastInput.length < 1) {
    $form.prepend($newInput);
}
// at least on existing input, add the new input after the last one
else {
    $lastInput.after($newInput);
}

答案 1 :(得分:0)

should not parse HTML using Regexp.不,认真。

话虽如此,多字符替代品的正确语法是(?:alternativeA|alternativeB)

(.*?)(?:<button.*?>Submit<\/button><\/form>|<\/form>)

请注意,如果您之间有空格字符,则无效。这里不使用Regexp的另一个原因。