我需要从下面的表达式中检索71drwec4
,51drdsf3
或71drwec3
与"a_secret">
之间的</div>
以外的任何其他字符或类似的字符:
<div class="fs" id="a_secret">71drwec4</div>
<div class="fs" id="a_secre">51drdsf3</div>
<div class="fs" id="a_secr">54451drwec3</div>
答案 0 :(得分:1)
你必须使用正则表达式吗?如果要解析的文本是HTML,并且您可以使用jQuery,则可以使用此处的.text()
方法从ID中检索内容。
E.g。
var whatIwant = $("#a_secret").text();
答案 1 :(得分:1)
怎么样:
var pattern = /<div class="fs" id=".*?">(.*?)<\/div>/gm;
var src = '<div class="fs" id="a_secret">71drwec4</div> \n <div class="fs" id="a_secre">51drdsf3</div> \n <div class="fs" id="a_secr">54451drwec3</div>';
var match;
while (match = pattern.exec(src)) {
alert(match[1]);
}
根据需要更改它(我不知道你的id会是什么样子,或者它们是否都有相同的类等)。如果你想要匹配你自己页面内的元素,jQuery会像其他海报提到的那样容易。
并且......强制引用其他SO帖子:RegEx match open tags except XHTML self-contained tags
答案 2 :(得分:0)
// Match against your HTML, store matches in new 'matches' Array
var matches = htmlStr.replace(/<div.*?>(.+?)<\/div>/g, "$1 ").trim().split(' ');
...这假设您尝试检索的值中没有空格,如果空格有效,则需要稍微调整一下。但是针对您提供的测试HTML:
<div class="fs" id="a_secret">71drwec4</div>
<div class="fs" id="a_secre">51drdsf3</div>
<div class="fs" id="a_secr">54451drwec3</div>
......这种方法产生:
["71drwec4", "51drdsf3", "54451drwec3"]
干杯
答案 3 :(得分:0)
其中一个可能适用于javascript。
以&lt; name&gt;保护的超限保护
str = '
<div
(?=\s)
(?= (?:[^>"\']|"[^"]*"|\'[^\']*\')*? (?<=\s) id \s*=
(?: (?> \s* ([\'"]) \s* a_secret \s* \g{-1} )
| (?> (?!\s*[\'"]) \s* a_secret (?=\s|>) )
)
)
(?> \s+ (?:".*?"|\'.*?\'|[^>]*?)+
>
) (?<! /> )
(?<not_71drwec3>(?:(?!71drwec3).)*?) </div\s*>
';
不受&lt; name&gt;
保护str = '
<div
(?=\s)
(?= (?:[^>"\']|"[^"]*"|\'[^\']*\')*? (?<=\s) id \s*=
(?: \s* ([\'"]) \s* a_secret \s* \g{-1}
| (?!\s*[\'"]) \s* a_secret (?=\s|>)
)
)
\s+ (?:".*?"|\'.*?\'|[^>]*?)+
>
(?<! /> ) // line is worthless when unprotected
(?<not_71drwec3>(?:(?!71drwec3).)*?) </div\s*>
';
不受保护的否&lt; name&gt;没有\ g {}符号
str = '
<div
(?=\s)
(?= (?:[^>"\']|"[^"]*"|\'[^\']*\')*? (?<=\s) id \s*=
(?: \s* ([\'"]) \s* a_secret \s* \1 // Group 1
| (?!\s*[\'"]) \s* a_secret (?=\s|>)
)
)
\s+ (?:".*?"|\'.*?\'|[^>]*?)+
>
(?<! /> ) // line is worthless when unprotected
((?:(?!71drwec3).)*?) </div\s*> // Group 2
';