JavaScript regExp返回";空";
我正在制作一个正则表达式来匹配1JavaScript regExp返回";空";,javascript,jquery,regex,function,methods,Javascript,Jquery,Regex,Function,Methods,我正在制作一个正则表达式来匹配1ul1textarea中的所有li。每次单击该按钮时,它都返回一个值null 这是最新消息。 下面是我的函数(){…}的样子: function doIt() { var input = document.getElementById("input"); var patt = /^<ol>{1}\n+\s?[<li>\w+<\/li>]+\n+<\/ol>{1}$/; alert(input.
ul1textarea
中的所有li
。每次单击该按钮时,它都返回一个值null
这是最新消息。
下面是我的函数(){…}
的样子:
function doIt() {
var input = document.getElementById("input");
var patt = /^<ol>{1}\n+\s?[<li>\w+<\/li>]+\n+<\/ol>{1}$/;
alert(input.value.match(patt));
}
函数doIt(){
var输入=document.getElementById(“输入”);
var patt=/^{1}\n+\s?[\w+]+\n+{1}$/;
警报(输入值匹配(patt));
}
我真的不知道为什么patt不能工作
以下是逻辑(用我自己的话):
^
-起点
{1}
-查找1
\n+
-查找一行或多行新行
\s?
-查找0个或更多(可选)空格
[- \w++
-查找包含一个或多个字符的一个或多个
\n+
-查找一行或多行新行
{1}
-查找1
$
-终点
- 我希望
[- \w++
返回一个或多个类似于:- Hello world:)
基本上,任何字符都可以介于
方括号的意思是匹配括号之间的任何单个字符
您希望将
和
拉到括号外-类似于\.\
以下是您的模式的实际功能:
^ — Maches the beginning of the string
<ol — Matches "<ol"
>{1} — matches ">" one time
\n+ — Matches 1 or more new lines
\s? — Matches 1 whitespace character (optional)
[<li>\w+<\/li>]+ — Matches any of the characters in "<>A-Za-z_/" 1 or more times
\n+ — Matches 1 or more new lines
<\/ol — Matches "</ol"
>{1} — Matches ">" one time
$ — Matches the end of the string
^-将字符串的开头改为马赫数
{1} -匹配“>”一次
\n+-匹配一个或多个新行
\s?-匹配1个空白字符(可选)
[\w+]+-匹配“A-Za-z_/”中的任何字符1次或多次
\n+-匹配一个或多个新行
{1} -匹配“>”一次
$-匹配字符串的结尾
在匹配字符串的开头和结尾时,模式必须匹配整个字符串,而不是字符串的一部分
如果您只在文本区域中放置此项,则模式将与之匹配:
<ol>
<li>Helloworld</li><li>Hellohowareyou</li><li>good</li>
</ol>
Helloworld 你好 好吗
你宁愿想要这样的东西:
var patt = /<ol>\s*(?:<li>[\w !:)]+<\/li>\s*)+<\/ol>/;
var patt=/\s*(?:[\w!:)]+\s*)+/;
说明:
<ol> — Matches "<ol>"
\s* — Matches zero or more whitespace characters (including newlines)
(?: — Starts a non-capturing group
<li> — Matches "<li>"
[\w+ !:)]+ — Matches any of the characters in "A-Za-z_ !:)" 1 or more times
<\/li> — Matches "</li>"
\s* — Matches zero or more whitespace characters
) — Ends the group
+ — Repeats the group one or more times
\n+ — Matches 1 or more new lines
<\/ol> — Matches "</ol>"
-匹配“”
\s*-匹配零个或多个空白字符(包括换行符)
(?:-启动非捕获组
-匹配“ ”
[\w+!:)]+-匹配“A-Za-z_!:)”中的任何字符1次或多次
-匹配“ ”
\s*-匹配零个或多个空白字符
)-小组结束
+-将组重复一次或多次
\n+-匹配一个或多个新行
-匹配项“”
演示:regExp不会返回
null
,match
会返回,因为没有matches@user2864740然后使用它-慢慢地建立正则表达式。当一部分不起作用时,分析是单独进行的。注意:JavaScript正则表达式返回获得的匹配项,而不是分组运算符的结果,因此,如果您希望获得“1个或多个类似于…
”的内容,则周围的
等不能成为正则表达式的一部分。(如果您希望获得一个或多个完整的父有序列表元素作为匹配项,那么您采取的是正确的方法。)您不应该使用正则表达式解析HTML字符串,尤其是在您已经在浏览器中的情况下。(OP希望使用分组参数,并完全消除方括号,以便它将匹配“一个或多个”LI组。)@哦,好的。知道它为什么会发出警报吗?可能是因为表达式不正确,对吗?我知道,*
表示任何字符中的一个或多个,但为什么所有的斜杠?你可能是对的,也许所有的斜杠都不是必需的。我会修改然后更新答案。谢谢你,效果很好!有没有一种方法可以匹配任何字符,而不是将其限制为a-Za-z!:)代码>?我试过*
,但它返回空值。啊,我想出来了!将[\w+!:)]+
替换为+