相当简单的HTML(省略号表示代码更多):
...Profile">
Some text
</a>...
使用JavaScript的在线RegEx测试器(http://regexpal.com/),我可以使用以下表达式提取“Some text”(请注意它包含换行符):
(?=Profile">)[\s\S]*(?=</a)
(不幸的是,JavaScript不支持后视镜,所以我也提取了Something“&gt;以便稍后删除它。但问题是,下面的代码
var ShowContent = document.getElementById(id);
ShowContent = ShowContent.innerHTML;
var patt3=/Profile">[\s\S]*(?=<)/;
var GetName=patt3.exec(ShowContent);
alert(GetName);
不会提取在线测试人员显示的内容,但它也包含“一些文本”之后的整个HTML代码(IE,不仅是结尾< /a
,还包括之后的所有内容)。
有人有任何建议吗?
答案 0 :(得分:2)
如果您确定提供的字符串不包含可能的陷阱(例如。<input value='Profile">'>
),请将[\s\S]*
替换为[^<]*
(除了<
之外的任何内容):< / p>
var patt3 = /Profile">([^<]*)/;
var getName = patt3.exec(ShowContent);
getName = getName ? getName[1] : ''; // If no match has been found -> empty string
alert(getName);
(我还用GetName
替换getName
,因为以大写字母开头的camelCased变量通常表示构造函数。坚持约定,不要用大写字母启动非构造函数。
答案 1 :(得分:0)
你可能最好不要使量词不合适。试试这个正则表达式:
/Profile">([\s\S]*?)(?=<)/