jQuery中有一個正則表達式定義彭定康這是什麼RegExp模式/(?:^ |:|,)(?: s * [)+/g在Javascript中的含義?
var rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g;
此模式相匹配的字符串,如 「ABC,[」 和 「ABC:[」,而不是 「ABC^[」。 那麼什麼是這部分在圖案的含義是:
(:^ |:|,)
jQuery中有一個正則表達式定義彭定康這是什麼RegExp模式/(?:^ |:|,)(?: s * [)+/g在Javascript中的含義?
var rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g;
此模式相匹配的字符串,如 「ABC,[」 和 「ABC:[」,而不是 「ABC^[」。 那麼什麼是這部分在圖案的含義是:
(:^ |:|,)
(?: ...)
是一組(如(...)
),它不捕獲任何東西。
因此,您的示例(?:^|:|,)
只是匹配文本的開頭,冒號或逗號。
此模式匹配「abc,[」和「abc:[」等字符串,但不匹配「abc^[」。
這聽起來像你不知道是什麼意思^
- 在一個正則表達式,它表示「字符串的開始」(除非您已開啓多行模式,它的意思是「開始該行「)。
()
指捕獲組?:
,如果你把這個在一個組的前面它不會被捕獲,所以捕獲組只成爲一組字符。^|:|,
表示它匹配行的開頭(^
)或:
或,
。 |
是這些令牌之間的分隔符。(?:^|:|,)
表示匹配^或:或,。通常這也會由於括號而捕獲這些字符,但是由於?:修飾符,它們不會被捕獲。
更新:哎呦,真夠的。 ^在此上下文中匹配字符串的開頭,而不是符號本身。
錯誤,'^'表示「輸入開始」(至少在'g'模式中) – 2012-02-29 10:40:54
我明白了。我知道^表示字符串或行的開始,但我不知道它可以與|一起使用。 – dencey 2012-02-29 10:18:18
@dencey:它意味着在正則表達式的任何地方的字符串的開始,除非它在一個字符類[[]]內:) – porges 2012-02-29 10:22:39
@Porges因爲如果^是字符類中的第一個字符,它意味着不是如果它不是第一個字符,則意味着正常的'^' – 2012-02-29 10:27:54