如何理解这种正则表达式模式

时间:2014-01-08 17:44:31

标签: javascript regex less

Javascript正则表达式模式我发现更少:

/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/

特别是本节:

\\(?:[A-Fa-f0-9] {1,6}?| [^ A-Fa-f0-9])

2 个答案:

答案 0 :(得分:1)

让我们从内到外,在必要时使用MDN作为参考:

(?:[A-Fa-f0-9] {1,6}?| [^ A-Fa-f0-9])

(?:)是一个非捕获括号。它分组和匹配,但不保存结果。在该组内部是1-6个十六进制数字,后跟可选空格或除十六进制字符以外的任何字符。

(?:[\ w-] | \\ above)+

同样,一个非捕获括号,这个时间为\w,它是任何字母数字字符+ _,并且因为有[\w-],那就是“任何alphanum + -_”。然后是一个或一个\字符,以及上面的字符。同时,这使得此括号组读为:“任何单个字母数字字符,下划线或连字符,或反斜杠后跟任何不是hexdigit或1到6个字符的十六进制字符串。” +表示“至少有1个群组实例。”

<强> ^([#] above)\ S *(

现在我们有^[#.],这意味着“该行必须以#或。开头,后跟上面的内容,任意数量的空格,后跟左括号。

<强> TL; DR:

当你全部添加时,你得到:

“以#.开头的行后跟一个或多个:

  • 字母数字字符,_或 - 或
  • 反斜杠后跟一到六位六角形后跟一个可选空格OR
  • 反斜杠后跟一个非hexdigit字符

后跟任意数量的空格,然后是(“。

如果找到匹配项,则在空格和(之前的整个部分都存储在搜索结果中。

答案 1 :(得分:1)

([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(

enter image description here