javascript - RegEx 与 JavaScript 的匹配程度超出了应有的范围

标签 javascript regex html-parsing

相当简单的 HTML(省略号表示还有更多代码):

...Profile">
 Some text
 </a>...

使用 JavaScript 的在线 RegEx 测试器 (http://regexpal.com/),我可以使用以下表达式提取“某些文本”(注意它包含换行符):

(?=Profile">)[\s\S]*(?=</a)

(不幸的是,JavaScript 不支持后向查找,因此我还提取了 Something"> 以便稍后删除它。但是,问题是下面的代码

var ShowContent = document.getElementById(id);
ShowContent = ShowContent.innerHTML;
var patt3=/Profile">[\s\S]*(?=<)/;
var GetName=patt3.exec(ShowContent);
alert(GetName);

不会提取在线测试程序显示的内容,但它还包含“Some text”之后的整个 HTML 代码(即,不仅是结尾 < /a,还包括之后的所有内容)。

有人有什么建议吗?

最佳答案

当您确定提供的字符串不包含可能的陷阱时(例如 <input value='Profile">'> ,请将 [\s\S]* 替换为 [^<]* (除 < 之外的任何内容):

var patt3 = /Profile">([^<]*)/;
var getName = patt3.exec(ShowContent);
getName = getName ? getName[1] : ''; // If no match has been found -> empty string

alert(getName);

(我还将 GetName 替换为 getName ,因为以大写字母开头的驼峰式变量通常表示构造函数。请遵守约定,不要以大写字母开头非构造函数)。

关于javascript - RegEx 与 JavaScript 的匹配程度超出了应有的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10165280/

相关文章:

php - 正则表达式 PHP,将所有链接与特定文本匹配

javascript - Google map 样式、可见性关闭和性能

javascript - 使用repeat.for 的数据更改后重新运行bind() 或attached()

java - 解析时不忽略空格 - Java

java - 在 PHP 中寻找像简单 html dom 一样的 java html 解析器

javascript - 我从头开始创建 html 解析器的想法可行吗?

javascript - 使用 new Function() 将字符串转换为对象 - 这是如何工作的?

javascript - 如何查看我的项目中ES6类的继承关系?

Javascript 正则表达式替换 - Chrome

python - 当第一个子字符串后有空格时,在 Python 中查找两个子字符串之间的字符串