我目前正在编写一个代码段,自动链接某些关键字,并将链接的链接保存到名为linked
的数组中。我这样做是为了防止某个单词被链接两次。
现在,用户正在写入文本框,写入链接的关键字。这很好。我现在的问题是,当他从文本框中删除文本时,我正试图处理这种情况。这意味着我必须将文本中的所有链接与链接数组匹配,然后从链接数组中删除那些不再在文本中的链接。到目前为止理论。不幸的是我遇到了以下错误。
假设我们有这样的文字:
Test <a href='link1'>Link1</a> <a href='link2'>Link2</a>
我使用这个regEx(/ href ='([^ \'\ _]] +)'/ g)来获取上面文本中的所有href,如下所示:
var hrefs = $(textInput).val().match(/href='([^\'\"]+)'/g);
这给了我一个包含以下内容的数组:
HREF = 'LINK1'
HREF = '链接2'
如果我开始删除文字并最终得到类似的内容:
Test <a href='link1'>Link1</a> <a href='link2
注意一个'即将消失,整个regEx结果未定义,即使字符串中仍有链接。既然我不是regEx的专家,我看不清楚为什么?这种情况可能有更好的regEx吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
像这样使用此正则表达式/href=('|")\w+('|")/g
;
var hrefs = $(textInput).val()。match(/ href =('|“)\ w +('|”)/ g);
这应该会给你匹配。
BTW,match()
是正确的。不要像@tenub那样exec()
如果有帮助,请将其标记为答案:)