这个RegExp模式/(?:^ |:|,)(?:\ s * \ [)+ / g在Javascript中是什么意思?

时间:2012-02-29 09:37:35

标签: javascript jquery regex

在Jquery中有一个regexp模式定义

var rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g;

此模式匹配“abc,[”和“abc:[”等字符串,但不匹配“abc ^ [”。 那么这个部分在模式中的含义是什么:

  

(:^ |:|)

3 个答案:

答案 0 :(得分:1)

  • ()表示捕获组
  • ?:如果您将其放在组的前面,则不会被捕获,因此捕获组只会成为一组字符。
  • ^|:|,表示它与该行的开头(^)或:,匹配。 |是这些令牌之间的分隔符。

答案 1 :(得分:1)

(?: ... )是一个没有捕获任何内容的组(如(...))。

因此,您的示例(?:^|:|,)只匹配文本的开头,冒号或逗号。

  

此模式匹配“abc,[”和“abc:[”等字符串,但不匹配“abc ^ [”。

听起来你不知道^是什么意思 - 在正则表达式中,它意味着“字符串的开头”(除非你打开了多行模式,这意味着“开始” “。”。

答案 2 :(得分:1)

(?:^|:|,)表示匹配^或:或。通常这也会因为括号而捕获这些字符,但由于?:修饰符,它们不会被捕获。

更新:哎呀,真的够了。 ^匹配此上下文中字符串的开头,而不是符号本身。