【发布时间】:2014-06-26 19:44:04
【问题描述】:
我正在制作一个正则表达式来匹配 1 ul 中的所有 li 1 textarea。每次单击按钮时,它都会返回一个值null。
这是Fiddle。
这是我的function(){...} 的样子:
function doIt() {
var input = document.getElementById("input");
var patt = /^<ol>{1}\n+\s?[<li>\w+<\/li>]+\n+<\/ol>{1}$/;
alert(input.value.match(patt));
}
我真的不知道为什么patt 不起作用...
这是逻辑(用我自己的话来说):
-
^— 起点 -
<ol>{1}— 寻找 1<ol> -
\n+— 查找 1 个或多个新行 -
\s?— 查找 0 个或多个(可选)空格 -
[<li>\w+<\/li>]+— 查找包含 1 个或多个字符的 1 个或多个<li></li>。 -
\n+— 查找 1 个或多个新行 -
<\/ol>{1}— 寻找 1</ol> -
$— 终点
- 我希望
[<li>\w+<\/li>]+返回 1 个或多个类似:<li>Hello world :)</li>
基本上,任何东西都可以在<li></li>之间。
【问题讨论】:
-
regExp 不返回
null,match因为没有匹配项而返回 -
@user2864740 This 是免费的
-
然后使用它——慢慢建立正则表达式。当一个部分不起作用时,分析是分开的。
-
注意:JavaScript 正则表达式返回的是获得的匹配,而不是分组运算符的结果,所以如果你想获得“1 个或多个类似
<li>...</li>”的东西,那么周围的<ol>等。不能成为您的正则表达式的一部分。 (如果您想获得一个或多个完整的父有序列表元素作为匹配项,那么您正在采取正确的方法。) -
您不应该使用 RegEx 解析 HTML 字符串,尤其是当您已经在浏览器中时。
标签: javascript jquery regex function methods