2016-12-04 59 views
-1

JavaScript中的(?=regex)(?:regex)有什麼區別?(?=正則表達式)VS(?:正則表達式)

請用一個例子來解釋它。

+4

MDN在「[特殊字符在正則表達式中的含義]」下提供了一個解釋和示例(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp# Special_characters_meaning_in_regular_expressions)。」 –

+1

http://www.rexegg.com/regex-disambiguation.html#lookarounds –

+1

您也可以嘗試Stack Overflow的Regex文檔 - [Capture Groups](https://stackoverflow.com/documentation/regex/660/capture-羣組),[Lookahead and Lookbehind](https://stackoverflow.com/documentation/regex/639/lookahead-and-lookbehind) –

回答

7

(?=regex)是一個積極的向前看,它匹配主表達式後的一個組,而不包括它在結果中。
實施例:

\d(?=px) 
1pt 2px 3em 4px 

這隻會匹配24,而不是整個2px4px

(?:regex)是一個非捕獲組,它將多個令牌分組在一起而不創建捕獲組。
實施例:

(?:ha)+ 
hahaha haa hah! 

這將匹配每個ha,但不爲它創建的基團。

+1

謝謝stella,你必須幫助我而不是負面投票。 – Ehsan