در رِجِکس دو علامت +
و *
بسیار پرکاربرد هستند که آشنایی با سازوکار آنها الزامی است. علامت +
حاکی از آن است که کاراکتر مذکور میتواند تا بینهایت بار تکرار شود اما حداقل یک بار میباید درج شده باشد و کاراکتر *
نیز دقیقاً همین تعریف را دارا است با این تفاوت که چنین کاراکتری میتواند همان یک بار هم تکرار نشود. برای درک بهتر این موضوع، مثال زیر را مد نظر قرار میدهیم:
var string = "c1";
var regex = /[a-z]\d+/;
string.match(regex);
در رِجِکس فوق دستور دادهایم تا حرف اول استرینگ یکی از حروف الفبای انگلیسی به صورت کوچک باشد سپس یک عدد میباید قرار گیرد که حداقل یک بار تکرار شود اما در عین حال تا بینهایت بار میتواند تکرار گردد؛ به طور مثال، استرینگ c123456789
نیز با این رِجِکس مَچ میشود. در عین حال، استرینگی همچون c
هرگز قابلقبول نخواهد بود چرا که علامت +
بدان معنا است که یک عدد حتماً میباید پس از حرف اول قرار گیرد و اگر بخواهیم چنین محدودیتی را برداریم، میتوانیم به جای علامت +
از علامت *
به صورت زیر استفاده نماییم:
var string = "c";
var regex = /[a-z]\d*/;
string.match(regex);
رِجِکس فوق از این پس بدان معنا است که پس از یک حرف اولیه، هم میتوان هیچ عددی وارد نکرد، هم یک عدد وارد کرد و هم بیش از یک عدد در نظر گرفت.
از دیگر علائم مرتبط با این حوزه میتوان به ?
اشاره کرد که حاکی از آن است که کاراکتر مذکور میباید یا هیچ بار و یا فقط یک بار تکرار شده باشد. به طور مثال، قصد داریم رِجِکسی بنویسیم که هم استرینگ Mr. Moradi
را پوشش دهد و هم Mr Moradi
بدون درج یک نقطه پس از لقب Mr
که برای این منظور خواهیم داشت:
var string = "Mr Moradi";
var regex = /Mr\.?\s\w+/;
string.match(regex);
خواه این لقب را به صورت .Mr
و خواه به صورت Mr
بنویسیم، رِجِکس فوق به خاطر حضور علامت ?
با هر دو مورد مَچ خواهد شد. به عبارتی، دستور دادهایم که استرینگ مذکور با حروف Mr
شروع شده و به دلیل حضور علامت ?
پس از علائم .\
میتوان گفت نقطه هم میتواند حضور داشته باشد و هم حضور نداشته باشد. سپس علامت s\
حاکی از حضور یک اِسپیس است و در نهایت w\
را نوشتهایم که اصطلاحاً نشانگر Word Character است و علامت +
هم نشان میدهد که این جایگاه هم میتواند حداقل یک کاراکتر و حداقل بینهایت کاراکتر را شامل گردد.