需要以下帮助。
在javascript中,需要传递输入
例如:
str="<a href=www.google.com>Google</a>"; // this is for example actual input vary
// str is passed as parameter for javascript function
输出应检索为“Google”。
我在java中使用正则表达式并且它正常工作。
String regex = "< a [ ^ > ] * > ( . * ? ) < / a > ";
Pattern p = Pattern.compile(regex, Pattern.DOTALL | Pattern.CASE_INSENSITIVE);
但是在javascript中它无效。
我怎样才能在Javascript中执行此操作。任何人都可以为我的javascript实现提供帮助。
答案 0 :(得分:3)
我不认为您想使用正则表达式。您可以尝试这样: -
<a id="myLink" href="http://www.google.com">Google</a>
var anchor = document.getElementById("myLink");
alert(anchor.getAttribute("href")); // Extract link
alert(anchor.innerHTML); // Extract Text
编辑: - (正如Patrick Evans所评论的那样)
var str = "<a href=www.google.com>Google</a>";
var str1 = document.createElement('str1');
str1.innerHTML = str;
alert(str1.textContent);
alert( str1.innerText);
答案 1 :(得分:2)
将HTML字符串插入元素,然后只获取文本?
var str = "<a href=www.google.com>Google</a>";
var div = document.createElement('div');
div.innerHTML = str;
var txt = div.textContent ? div.textContent : div.innerText;
在jQuery中,这将是:
var str = "<a href=www.google.com>Google</a>";
var txt = $(str).text();
答案 2 :(得分:2)
根据你们提出的建议,我得到了答案并为我工作
function extractText(){
var anchText = "<a href=www.google.com>Google</a>";
var str1 = document.createElement('str1');
str1.innerHTML = anchText;
alert("hi "+str1.innerText);
return anc;
}
感谢大家的支持
答案 3 :(得分:1)
刚开始对此进行初步尝试,我可以更新这是您在问题中添加更多测试用例或详细信息:
\w+="<.*>(.*)</.*>"
这与您提供的示例匹配,此外无论是否:
特别是,如果你的html标签中有尖括号,那么会有什么打破这种情况。
注意:用其他答案尝试使用html这是一个更好的主意,我只用正则表达式回答这个问题,因为那是OP要求的。对于OP,如果你可以在没有正则表达式的情况下执行此操作,请执行此操作。您不应该尝试使用javascript解析HTML,并且此正则表达式与完整的html解析器无法比较。
答案 4 :(得分:0)
不需要正则表达式,只需用DOMParser解析字符串并获取元素然后使用DOM对象方法/属性
var parser = new DOMParser();
var str='<a href='www.google.com'>Google</a>";
var dom = parser.parseFromString(str,"text/xml");
//From there use dom like you would use document
var atags = dom.getElementsByTagName("a");
console.log( atags[0].textContent );
//Or
var atag = dom.querySelector("a");
console.log( atag.textContent );
//Or
var atag = dom.childNodes[0];
console.log( atag.textContent );
只有catch是IE中不支持DOMParser低于9。
答案 5 :(得分:-2)
好吧,如果您使用的是JQuery,这应该是一件容易的事。
我只想创建一个不可见的div并在其上渲染此anchor()。之后你可以简单地选择锚点并获得它的内部文本。
$('body').append('<div id="invisibleDiv" style="display:none;"></div>'); //create a new invisible div
$('#invisibleDiv').html(str); //Include yours "str" content on the invisible DIV
console.log($('a', '#invisibleDiv').html()); //And this should output the text of any anchor inside that invisible DIV.
请记住,要做到这一点,您必须在页面上加载JQuery。
编辑:只有在项目中已经有JQuery时才使用,因为如下所述,这很简单,因为这不应该是包含整个库的原因。
答案 6 :(得分:-2)
假设您使用的是java,来自提供的代码。
我建议您使用JSoup来提取锚标记内的文字 这是一个原因。 Using regular expressions to parse HTML: why not?
String html = "<a href='www.google.com'>Google</a>";
Document doc = Jsoup.parse(html);
Element link = doc.select("a").first();
String linkHref = link.attr("href"); // "www.google.com"
String linkText = link.text(); // "Google""
String linkOuterH = link.outerHtml();
// "<a href='www.google.com'>Google</a>";
String linkInnerH = link.html(); // "<b>example</b>"