我是正则表达式的新手。我有一个包含的变量:
<b><font color="#32748">My string:</font></b>
<big> My value </big>
<br>
其字符串变量多次重复,并更改My string
和My value
(随机值)。我需要找到具体My value
的{{1}}并在新变量中存储(值)。有时该字符串有空格,有时没有空格。
答案 0 :(得分:1)
var myRegEx = /<b><font color="#[0-9]{3,6}">(.+)<\/font><\/b>[\r\n]{0,2}<big>(.+)<\/big>[\r\n]{0,2}<br>/i;
var myString = '<b><font color="#32748">My string:</font></b>\n<big> My value </big>\n<br>';
var myResult = myString.match(myRegEx);
console.log(myResult[1] + " | " + myResult[2]);
正则表达式:
[0-9]
匹配0-9范围内的任何单个字符
{3,6}
匹配前面令牌的3到6个
(.+)
捕获组。
.
匹配任何字符,但如果dotall为false,则换行符除外
+
匹配前面标记中的一个或多个。
\n
换行符。
\r
回车符。
[\r\n]
匹配集合中的任何单个字符
{0,2}
匹配前面标记的0到2。
现在只需将其应用于您的代码中即可。您可以在http://gskinner.com/RegExr/进行测试。
答案 1 :(得分:1)
你应该try to avoid using regular expressions for parsing HTML。特别是使用非常强大的工具来构建每个浏览器。
这是一个没有正则表达式的解决方案,我觉得很简单。
以下是它的工作原理:
textContent
属性来获取文本。实际代码:
var test = '<b><font color="#32748">My string:</font></b><big> My value </big><br>';
// we create an empty element and put the html in it
var div = document.createElement("div");
div.innerHTML = test;
// get the text from the font tag, as you asked for.
var test = div.querySelector("font").textContent;
注意,<font>
标记已弃用,不应在新代码中使用。我考虑查看当前的HTML5规范,并了解现代HTML中的工作原理。
注意2,在oldIE中,您无法使用textContent
,因此您可以innerHTML
或innerText
。
答案 2 :(得分:-1)
使用jquery做这样的事情:
var t = '<b><font color="#32748">My string:</font></b><big> My value </big><br><b><font color="#32748">My string1:</font></b><big> My value1 </big><br>';
var data = $('big', $('<div/>').append(t)).map(function() {
return $.trim($(this).text());
});
console.log(data[0]); // My value
console.log(data[1]); // My value1