Javascript 谁能给我解释一下这个正则表达式吗?

Javascript 谁能给我解释一下这个正则表达式吗?,javascript,regex,Javascript,Regex,我看到这行代码和正则表达式让我很恐慌 quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/ quickExpr=/^(?:[^#]*$|#([\w\-]*)$)/ 有人能一点一点地解释一下它的作用吗? 谢谢,G^(?:[^#]*$|#([\w\-]*)$) 断言字符串«^»开头的位置 匹配下面的正则表达式«(?:[^#]*$|#([\w\-]*)$)» 匹配下面的正则表达式(仅当此正则表达式失败时才尝试下一个正则

我看到这行代码和正则表达式让我很恐慌

quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/
quickExpr=/^(?:[^#]*$|#([\w\-]*)$)/
有人能一点一点地解释一下它的作用吗? 谢谢,G

^(?:[^#]*$|#([\w\-]*)$)
断言字符串«^»开头的位置
匹配下面的正则表达式«(?:[^#]*$|#([\w\-]*)$)»
匹配下面的正则表达式(仅当此正则表达式失败时才尝试下一个正则表达式)«[^#]*$»
匹配列表中不存在的单个字符“#”«[^>]*»
在零次和无限次之间,尽可能多次,根据需要回馈(贪婪)«*»
断言字符串末尾的位置(或字符串末尾的换行符之前,如果有)«$»
或者匹配下面第2个正则表达式(如果该正则表达式不匹配,则整个组将失败)«#([\w\-]*)$»
按字面上的«#»匹配字符“#”
匹配下面的正则表达式,并将其匹配捕获到反向引用编号2«([\w\-]*)»中
匹配以下列表中的单个字符«[\w\-]*»
在零次和无限次之间,尽可能多次,根据需要回馈(贪婪)«*»
匹配“文字字符”(字母、数字等)的单个字符«\w»
A-字符«\-»
断言字符串末尾的位置(或字符串末尾的换行符之前,如果有)«$»
使用RegexBuddy创建
^(?:[^#]*$|#([\w\-]*])$)
断言字符串«^»开头的位置
匹配下面的正则表达式«(?:[^#]*$|#([\w\-]*)$)»
匹配下面的正则表达式(仅当此正则表达式失败时才尝试下一个正则表达式)«[^#]*$»
匹配列表中不存在的单个字符“#”«[^>]*»
在零次和无限次之间,尽可能多次,根据需要回馈(贪婪)«*»
断言字符串末尾的位置(或字符串末尾的换行符之前,如果有)«$»
或者匹配下面第2个正则表达式(如果该正则表达式不匹配,则整个组将失败)«#([\w\-]*)$»
按字面上的«#»匹配字符“#”
匹配下面的正则表达式,并将其匹配捕获到反向引用编号2«([\w\-]*)»中
匹配以下列表中的单个字符«[\w\-]*»
在零次和无限次之间,尽可能多次,根据需要回馈(贪婪)«*»
匹配“文字字符”(字母、数字等)的单个字符«\w»
A-字符«\-»
断言字符串末尾的位置(或字符串末尾的换行符之前,如果有)«$»
使用RegexBuddy创建

以下是我可以提取的内容:

  • ^
    字符串的开头
  • (?:
    非匹配组
  • [^#
|
后面的部分表示在第一个正则表达式失败时要尝试的第二个正则表达式。该正则表达式是
#([\w\-]*)

  • #
    #
    字符匹配。没有那么复杂
  • ([\w\-]*)
    是一个匹配任意数量的单词字符或破折号的组。基本上是这种形式的
    事物
  • $
    标记正则表达式的结尾

我不是regex pro,如果我错了,请纠正我。

以下是我可以提取的内容:

  • ^
    字符串的开头
  • (?:
    非匹配组
  • [^#
|
后面的部分表示在第一个正则表达式失败时要尝试的第二个正则表达式。该正则表达式是
#([\w\-]*)

  • #
    #
    字符匹配。没有那么复杂
  • ([\w\-]*)
    是一个匹配任意数量的单词字符或破折号的组。基本上是这种形式的
    事物
  • $
    标记正则表达式的结尾

我不是regex pro,所以如果我错了,请纠正我。

你不能自己把regex分解并用谷歌搜索每个组件吗?这很简单。我开始了,但是
[\w\w]
对我来说毫无意义。我很好奇你能得到什么答案。@Blender你是对的。事实上我正在MDN上阅读有关它的内容。@GGG:这是任何单词字符或非单词字符。换句话说,任何字符。我更常看到它,因为
\s\s
@Gnijuohz“空白或非空白”与“单词字符还是非单词字符”,因为它们都表示“匹配任何内容”。我缺少的是正常的“匹配任何内容”操作符(
)和使用
[\w\w]
匹配任何内容之间的区别。在这种情况下,我仍然不明白这是否只是关于换行符(无
/m
修饰符).你不能自己把正则表达式分解并用谷歌搜索每个组件吗?这很简单。我开始了,但是
[\w\w]
对我来说毫无意义。我很好奇你能得到什么答案。@Blender你是对的。事实上我正在MDN上阅读有关它的内容。@GGG:这是任何单词字符或非单词字符。换句话说,任何字符。我更常看到它是
\s\s
@Gnijuohz“空白或非空白”与word character或not word character”的意思都是“匹配任何内容”。我缺少的是正常的“匹配任何内容”操作符(
)和使用
[\w\w]
匹配任何内容之间的区别。在这种情况下,我仍然不明白这是否只是关于换行符(无
/m
修饰符).那么,你的解释在哪里?它一点一点地告诉你正则表达式的功能。这正是你所要求的。如果你不理解它,就抓住正则表达式,它会用颜色、选择和指示器等向你解释。如果你仍然不理解它,那么你就应该真正开始学习正则表达式,它们并不是那么简单因为没有经验users@david我不
^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)

Assert position at the start of the string «^»
Match the regular expression below «(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)»
   Match either the regular expression below (attempting the next alternative only if this one fails) «[^#<]*(<[\w\W]+>)[^>]*$»
      Match a single character NOT present in the list "#<" «[^#<]*»
         Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
      Match the regular expression below and capture its match into backreference number 1 «(<[\w\W]+>)»
         Match the character "<" literally «<»
         Match a single character present in the list below «[\w\W]+»
            Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
            Match a single character that is a "word character" (letters, digits, etc.) «\w»
            Match a single character that is a "non-word character" «\W»
         Match the character ">" literally «>»
      Match any character that is not a ">" «[^>]*»
         Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
      Assert position at the end of the string (or before the line break at the end of the string, if any) «$»
   Or match regular expression number 2 below (the entire group fails if this one fails to match) «#([\w\-]*)$»
      Match the character "#" literally «#»
      Match the regular expression below and capture its match into backreference number 2 «([\w\-]*)»
         Match a single character present in the list below «[\w\-]*»
            Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
            Match a single character that is a "word character" (letters, digits, etc.) «\w»
            A - character «\-»
      Assert position at the end of the string (or before the line break at the end of the string, if any) «$»


Created with RegexBuddy