用于获取链接文本的正则表达式
Regular expression to get link text
我被难住了!我在谷歌上搜索过,读过,读过,读过,读过,我确信有一些真的很蠢我做错了。这是从一个油膏猴脚本,我不能为我的生活得到启动和执行正确。我正在尝试匹配这个:
<a href="/browse/post/SOMETHING/">**SOMETHING** (1111)</a>
我用的是:
var titleRegex = new RegExp("<a href='"/browse/post/'d*/'">(.*) '(");
我确定我遗漏了一些转义字符?但是我就是不能弄清楚,这样Firefox就不会出错了。
我使用http://regexpal.com/生成regexp——在Firefox错误控制台中,我收到"unterminated parentheses"
当从字符串而不是正则表达式文本构建正则表达式时,需要双反斜杠。
则'd*
只匹配数字。我假设SOMETHING
只是一个占位符,但如果它包含除数字以外的任何内容,它将失败。
另外,您应该使用(.*?)
(惰性)而不是(.*)
(贪婪),否则您可能匹配太多。也许([^(]*)
会更好。
在不了解要匹配的实际文本的情况下,很难说。
All in All:
var titleRegex = new RegExp("<a href='"/browse/post/''d*/'">([^(]*) ''(");
这里有一个简单的修复:
/href='".*?'">(.*?)'(/
一般思路是获取一个HTML字符串,将其解析为文档(dom元素树),然后遍历它以提取信息。
如果链接是:
<a href="/browse/post/something/"><b>something</b> else</a>
首先遍历树查找锚标记,然后:
anchor.textContent // returns "something else"
从元素中提取文本很简单,即使下面的树中有其他元素也包含文本。这也比正则表达式示例更健壮。假设有人向锚添加了一个类属性,那么接受的答案中的正则表达式将不再与锚标记匹配。但是基于遍历的解决方案仍然有效。
在简单的情况下,您可以创建一个div,然后将innerHTML
设置为HTML字符串,然后遍历它:
var html = '<p><a href="/browse/post/">Lorem</p> <p>Ipsum</p></a>';
var div = document.createElement("div");
div.innerHTML = html;
var anchors = div.getElementsByTagName("a");
for (var i = 0; i < anchors.length; i++) {
console.log(anchors[i].textContent);
}
一个更复杂的版本被封装在jQuery(string)函数中。
var html = '<div><p><a href="/browse/post/">Lorem</p> <p>Ipsum</p></a></div>';
jQuery(html).find("a").each(function() {
console.log(jQuery(this).text());
});
实例:http://jsfiddle.net/ygcFM/
相关文章:
- JavaScript正则表达式文本与RegExp对象
- 尝试使用Javascript正则表达式来获取“&"分隔文本,无论它是否's是最后一个值
- 匹配某个字符后所有文本的正则表达式是什么
- 正则表达式,用于从html格式的字符串中提取文本
- 使用 JavaScript 中的正则表达式替换大文本中两个字符之间的每个出现的字符串
- Jquery 替换所有文本语法正则表达式中的变量
- 如何使用 JSON 解析正则表达式文本
- 使用 JavaScript 正则表达式替换文本中的类似字符串
- 返回Javascript中给定正则表达式的文本范围数组
- 从正则表达式文本中获取正则表达式字符串表示的最佳方式
- 为什么我的 Javascript 中的两个正则表达式文本在一个属性上有所不同
- 正则表达式匹配不在字符串或正则表达式文本中的 JS 源
- 正则表达式文本中的Unicode代码点转义-Javascript
- 在正则表达式文本中的字符类中使用/总是安全的
- 何时使用RegExp构造函数vs正则表达式文本
- javascript中的正则表达式文本插入
- Javascript正则表达式匹配模式,但不匹配正则表达式文本(r.js优化器和uglify问题)
- 正则表达式文本/数字提取
- 正则表达式文本合并
- 如何在 JavaScript 中连接正则表达式文本