在Jquery中有一个regexp模式定义
var rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g;
此模式匹配“abc,[”和“abc:[”等字符串,但不匹配“abc ^ [”。 那么这个部分在模式中的含义是什么:
(:^ |:|)
答案 0 :(得分:1)
()
表示捕获组?:
如果您将其放在组的前面,则不会被捕获,因此捕获组只会成为一组字符。^|:|,
表示它与该行的开头(^
)或:
或,
匹配。 |
是这些令牌之间的分隔符。答案 1 :(得分:1)
(?: ... )
是一个没有捕获任何内容的组(如(...)
)。
因此,您的示例(?:^|:|,)
只匹配文本的开头,冒号或逗号。
此模式匹配“abc,[”和“abc:[”等字符串,但不匹配“abc ^ [”。
听起来你不知道^
是什么意思 - 在正则表达式中,它意味着“字符串的开头”(除非你打开了多行模式,这意味着“开始” “。”。
答案 2 :(得分:1)
(?:^|:|,)
表示匹配^或:或。通常这也会因为括号而捕获这些字符,但由于?:修饰符,它们不会被捕获。
更新:哎呀,真的够了。 ^匹配此上下文中字符串的开头,而不是符号本身。