기존 .(dot) 은 하나의 문자를 검색을 의미하지만, 줄바꿈 문자의 경우 false 를 반환하는 문제가 있었음.
그래서 새로 추가된 /s 플레그를 통해 해당 값을 확인할 수 있음
// [예시 1]/hello.bye/.test('hello\nbye')// prints false
// [예시 2]/hello.bye/s.test('hello\nbye')// prints true
1.2 RegExp 를 통한 그룹 캡춰
groups 이하 지정한 이름(year, month, day)을 통해 접근 가능
// [예시 1] 예전 방식constREGEX=/([0-9]{4})-([0-9]{2})-([0-9]{2});constresults=REGEX.exec('2018-07-12');console.log(results[1]);// prints 2018console.log(results[2]);// prints 07console.log(results[3]);// prints 12
// [예시 2] 새로운 방식constREGEX=/(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2});constresults=REGEX.exec('2018-07-12');console.log(results.groups.year);// prints 2018console.log(results.groups.month);// prints 07console.log(results.groups.day);// prints 12
1.3 Assertions
긍정(positive ?<=...) : 매칭하는 경우
'$foo #foo @foo'.replace(/(?<=#)foo/g,'XXX')// prints $foo #XXX @foo
부정(negative ?<!...) : 매칭되지 않는 경우
'$foo #foo @foo'.replace(/(?<!#)foo/g,'XXX')// prints $XXX #foo @XXX
1.4 유니코드 탐색
유니코드 지정한 유니코드로 \p{} 탐색이 가능해 짐.
/\p{Script=Greek}/u.test('μ')// prints true
2. 나머지(rest)/펼치기(spread) 속성
... 이전에 매칭된 값과 아닌값을 자동으로 채워 넣어준다.
constvalues={a:1,b:2,c:3,d:4};const{a,...n}=values;console.log(a);// prints 1console.log(n);// prints {b: 2, c: 3, d: 4}