ජාවාස්ක්රිප්ට් රෙග්යුලර් එක්ස්ප්රෙශන් වල Non-Capturing Groups
වරහන් ( ) කාර්යයන් දෙකක් ඉටු කරයි -
සංකේත සමූහගත කිරීම සහ කැප්චර් කිරීමේ කාර්යය. එහෙත්
කුමක් කළ යුතුද, අපට සමූහගත කිරීමට අවශ්ය නමුත්
කැප්චර් කිරීමට නොවේද?
මෙවැනි ගැටළුවක් විසඳීම සඳහා විශේෂ
non-capturing groups (?: )
සකස් කර ඇත - ඒවා සමූහගත කරයි, නමුත් කැප්චර් කිරීමට ගනී නැත.
උදාහරණය
පහත උදාහරණයේ දී, පළමු වරහන් අපට අවශ්ය වන්නේ සමූහගත කිරීම සඳහා වන අතර, දෙවන වරහන් අවශ්ය වන්නේ කැප්චර් කිරීම සඳහාය. කෙසේ වෙතත්, වරහන් දෙකම දත්ත කැප්චර් කරයි:
let str = 'abab123';
let res = str.match(/(ab)+([1-9]+)/);
එහි ප්රතිඵලයක් ලෙස අපගේ කැප්චර් වල පහත දේ ඇත:
console.log(res[0]); // prints 'abab123'
console.log(res[1]); // prints 'ab'
console.log(res[2]); // prints '123'
උදාහරණය
පළමු වරහන් යුගලය සමූහගත කිරීම පමණක් කරන, නමුත් කැප්චර් කිරීමට නොගන්නා පරිදි කරමු:
let str = 'abab123';
let res = str.match(/(?:ab)+([1-9]+)/);
එහි ප්රතිඵලයක් ලෙස පළමු කැප්චරයේ අපගේ අංකය ඇත:
console.log(res[1]); // prints '123'