在Javascript中,这个RegExp模式/(?:^::,)(?:\s*\[)&x2B;/g是什么意思?
在Jquery中有一个regexp模式定义在Javascript中,这个RegExp模式/(?:^::,)(?:\s*\[)&x2B;/g是什么意思?,javascript,jquery,regex,Javascript,Jquery,Regex,在Jquery中有一个regexp模式定义 var rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g; 此模式匹配字符串,如“abc,[”和“abc:[”,但不匹配“abc^[”。 那么模式中这部分的含义是什么: (?:^ |:|,) ()表示捕获组 ?:如果你把它放在一个组的前面,它将不会被捕获,因此捕获组将变成一组字符 ^ |:|,表示它匹配行的开头(^),或:或,。是这些标记之间的分隔符 ()表示捕获组 ?:如果你把它放在一个组的前面,它将不会被捕获,因此捕
var rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g;
此模式匹配字符串,如“abc,[”和“abc:[”,但不匹配“abc^[”。
那么模式中这部分的含义是什么:
(?:^ |:|,)
表示捕获组()
如果你把它放在一个组的前面,它将不会被捕获,因此捕获组将变成一组字符?:
表示它匹配行的开头(^ |:|,
),或^
或:
。,
是这些标记之间的分隔符
表示捕获组()
如果你把它放在一个组的前面,它将不会被捕获,因此捕获组将变成一组字符?:
表示它匹配行的开头(^ |:|,
),或^
或:
。,
是这些标记之间的分隔符
(?:…)
是一个不捕获任何内容的组(如(…)
)
因此,您的示例(?:^ |::|,)
只匹配文本的开头、冒号或逗号
此模式匹配字符串,如“abc,[”和“abc:[”,但不匹配“abc^[”
听起来你好像不知道^
是什么意思-在正则表达式中,它表示“字符串的开头”(除非你打开了多行模式,它表示“行的开头”)。(?:…)
是一个不捕获任何内容的组(如(…)
)
因此,您的示例(?:^ |::|,)
只匹配文本的开头、冒号或逗号
此模式匹配字符串,如“abc,[”和“abc:[”,但不匹配“abc^[”
听起来你好像不知道^
是什么意思——在正则表达式中,它意味着“字符串的开头”(除非你打开了多行模式,在那里它意味着“行的开头”)。(?:^::)
表示匹配^or:or.。通常这也会捕获这些字符,因为括号中有?:修饰符,所以它们不会被捕获
更新:哇,没错。^匹配此上下文中字符串的开头,而不是符号本身。(?:^ |:|,)
表示匹配^or:或。。通常这也会捕获这些字符,因为括号中有?:修饰符,它们不会被捕获
更新:哎哟,没错。^匹配此上下文中字符串的开头,而不是符号本身。我明白了。我知道^表示字符串或行的开头,但我不知道它是否可以与|结合使用。@dencey:它表示正则表达式中任何位置的字符串开头,除非它位于字符类
[…]
:)@Porges,因为如果^
是字符类中的第一个字符,则表示不是,如果它不是第一个字符,则表示正常的^
,我知道。我知道^表示字符串或行的开头,但我不知道它可以与|结合使用。@dencey:它表示正则表达式中任何位置的字符串开头,除非我t在字符类中[…]
:)@Porges因为如果^
是字符类中的第一个字符,则表示不是,如果不是第一个字符,则表示正常^
错误,^
表示“输入开始”(至少在g
模式下)错误,^
表示“输入开始”(至少在g
模式下)