Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript regExp返回";空";_Javascript_Jquery_Regex_Function_Methods - Fatal编程技术网

JavaScript regExp返回";空";

JavaScript 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.

我正在制作一个正则表达式来匹配1
ul
1
textarea
中的所有
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+!:)]+
    替换为
    +