我是正则表达式的新手。我的变量包含:
<b><font color="#32748">My string:</font></b>
<big> My value </big>
<br>
My string
它在变量中的字符串随着和My value
(随机值)的变化而重复多次。我需要在新变量中找到My value
具体My string
并存储(值)。有时该字符串有空格,有时没有空格。
我是正则表达式的新手。我的变量包含:
<b><font color="#32748">My string:</font></b>
<big> My value </big>
<br>
My string
它在变量中的字符串随着和My value
(随机值)的变化而重复多次。我需要在新变量中找到My value
具体My string
并存储(值)。有时该字符串有空格,有时没有空格。
你真的应该尽量避免使用正则表达式来解析 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
。
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]);
RegEx:
[0-9]
匹配 0-9 范围内的任何单个字符。
{3,6}
匹配前一个令牌的 3 到 6 个。
(.+)
捕获组。
.
匹配任何字符,如果 dotall 为 false,则换行符除外。
+
匹配 1 个或多个前面的标记。
\n
换行符。
\r
回车符。
[\r\n]
匹配集合中的任何单个字符。
{0,2}
匹配前一个标记的 0 到 2。
现在只需将它应用到您的代码中。您可以在http://gskinner.com/RegExr/对其进行测试。
使用 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