我有以下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);
答案 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的另一个原因。