JavaScript allows you to specify that a portion of a regular expression matches
only if it is or is not followed by a particular subexpression. The (?=) syntax
specifies a positive lookahead; it only matches the previous item if the item 
is followed immediately by the expression contained in (?=). The lookahead
expression is not included in the match.
lets suppose you want to match all those USD characters which are 
followed by some digits. Simply you want to match all those USD 
characters which are immediately followed by numbers for example 
you want to match
Code:
    //positive look ahead
    var line ="USD 100 USD 350 USD 345.56 USD currency USD rate"
    var pattern=/USD(?=\s\d+\.{0,}\d+)/gm
    var result = line.match(pattern)
    console.log(result)
    var lastIndex
    while ((match = pattern.exec(line))) { 
        lastIndex = match.index; 
        console.log("Occurance At:" + lastIndex)
    }
Output:
    [ 'USD', 'USD', 'USD' ]
    Occurance At:0
    Occurance At:8
    Occurance At:16
Explanation:
    Here first the engine will search for U after finding U upper case the 
    engine will look for S if it finds it will see if it is immediately 
    followed by D. 
    In case of a USD match the engine will enter lookahead and finds that it 
    is a positive lookahead and in this look ahead there is a space followed 
    by an optional number one or more quantifier then an optional dot and 
    after dot there is one or more digits. 
    This regex will match all USD words followed by a number of one or more 
    digits.
No comments:
Post a Comment