探究js正则匹配方法:match和exec

时间:2023-03-10 04:37:13
探究js正则匹配方法:match和exec

  match是字符串方法,写法为:str.match(reg)

  exec是正则表达式方法,写法为:reg.exec(str)

  match和exec在匹配成功时返回的都是数组,在没有匹配上时返回的都是null,故在没有深入了解两者的使用规则前,会误以为两者的使用效果是一样的,下面在几种情况中对match和exec进行区分。

1、全局匹配:

  当不使用全局匹配时,两者的匹配效果是一样的,仅返回第一次匹配成功的结果:

var s = "aaa bbb ccc";
var reg = /\b\w+\b/;//没有g
var rs_match = s.match(reg);
var rs_exec = reg.exec(s);
console.log("match:",rs_match);
console.log("exec:",rs_exec);

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQsAAAAwCAIAAACJ/cjfAAAD1klEQVR4nO2c7U4TQRSGzx3NFZ376C3MHfQajDFjoIYQDSoWBEIIOKCUIIkSDdEGJQ0fghx/7Efb3e7szrItjLxPSNNZptMJmYezs7vnkAAAiqGPAIBi6L4VBeBBA0MAcAFDAHABQwBwAUMAcBG8IfMre612J/8zv7JX9BGthEiIhDj3O8PCRpjE1J1Q0QhWFMXfq3TdwcHMeVCGWK1Iaev1mVa7M7i4ur29vbm+vro8H5z9Ou2f7B8ctNqdoo9oVbRGrSgWq4Vr+1E+AsOQoLgHQ4xxrD+j/Q35e3Pz5+ryfHBGRD9Pjr9/Pfzyea+OIUaLFdF3WL8VRoAhYTF7Qwy7/kPXMeTifHD2u9//8Y2Ijo/2j3rbvd31WjFkFsCQsGjQEKuVUoqImJmI2ETHiChpiWFKSDRJDsVto7XmsQ4l516tdue0f0Lj7GwsNWNIumVJZpvdSWQ7lANDwqLJGGK1YpO+ajOMF1ZzusTHYojheO0nRw0nanG1YNJqd6LTqsNPW0T0YfPN1uri+tu5JgwxkkxfoslolmhSzJM7VACGhEWzhrC26as2MhI01ERD8h6kZ1lVT7da7c5Rb7tn13e3lolo492L1SXTffm0mRjCyeWnaDJWZ6+CZTpUGxKGBMRUDRmJEDlDov368BexEXUMWVtb3tlY2uwuvH/9fOXVs+XFJwudJgwxLMn0Rdv4OpXI8E22QyVgSFg0uw+J9yBKayZS2qabDOZ0YxFvTcZbcdtwHG7SN1K2D5nr2on3Q+a6u0UT9TjLiuIDc7zTiHcdSjgaItehAjAkLB7U/ZAZ4bpjOD1wxzBMHqMhAFQHhgDgAoYA4AKGAOACeeoAuEAMAcAFDAHABQwBwAUMAcAFDAHAxSMwJHl4atIDuFaUEqPv8BxI4QiGh99bO6kX3DvhGeJdusEUr9HomVxW4pfX6DFC9Lw8DAmX8AzxLt1QaIgVbcTqO6zf8hFgSOgEaYhf6QZHDJk+MCR0GjYkSfeI8jmiFhuT5q1nOkguTz0+4ij24F26wcOQ0jT0XIcyYEjoNGrIMKk2TbW1mrUdb412yOWpl+NduqG6IaVp6NkO5cCQ0GnUkJFSJmNBIhcwkg6V6zWM4F26obohpWno+Q7VhoQh4TKlGJKWjTPMZng81yGXp16Od+mGqoaUpqHnOlQAhoTOlPYhxCZuZLLOMwW0cm2psg/xK93gcZZVloae7VDlDwJDwia8a1nepRtcdwynCO4Y/h+EZwgAswSGAOAChgDgAoYA4AKGAOAClRwAcIEYAoALGAKACxgCgAsYAoALGAKAi39CWwQfLGRjPAAAAABJRU5ErkJggg==" alt="" />

  当使用全局匹配时,两者的匹配结果出现区别:

var s = "aaa bbb ccc";
var reg = /\b\w+\b/g;//有g
var rs_match1 = s.match(reg);
var rs_match2 = s.match(reg);
var rs_exec1 = reg.exec(s);
var rs_exec2 = reg.exec(s);
console.log("match1:",rs_match1);
console.log("match2:",rs_match1);
console.log("exec1:",rs_exec1);
console.log("exec2:",rs_exec2);

aaarticlea/png;base64,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" alt="" />

  a、全局匹配时,match会返回所有匹配上的内容;而exec仅匹配单次匹配上的内容

b、全局匹配且进行多次匹配时,exe会从上次匹配结束的下一位开始匹配,返回本次匹配上的内容,直至无可以匹配的内容,返回null

  aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAATkAAAAuCAIAAADcJ/kxAAADXElEQVR4nO3c307bMByG4d8d5Yp8H74Fn/UwV5CDaZo8sUwIdWIbKwwQQnSGjSKGtKGtaKvYUMWfwfAO4qRp0hArhBGn3yMEhDqhJ68ct2DSAOACeuwnAABW6CMAuADzKoAb0CqAG9AqgBvQKoAb0CqAG+auVeFpIk2kieUek0wzqRlpWfXqRVdQ2iPzez1R9eIw3xrVqhIeERF5Qtmd8GJ1j/th/uPF6l7RKcIrqkVpj2klNKtcavkVGFqFqprUqhJMKK21Ep5lL9wPxxdXt7e3N9fXV5fn47Nfp6OT/YMD7odFpxS2KoVWWot7lGRxBbQKlTWp1UQcbSnuh39vbv5cXZ6Pz4jo58nx96+HXz7vVWn1v0CrUFmdrU7fwkZHTEpGRNE8mbvHlYyIkocn15mkqoR3xy0x98OL8/HZ79HoxzciOj7aPxrsDHY36mlVMrPENM8uXnQm52cHlEOrUFl9rU4Kk8y0pwQTavooPUAyU2EyxORsvV7lfng6OqFp/c3lOlqV8Thp1p/CM00KptWsARbQKlRWX6vxHJmdOHOTaDyg+E7XesHK/TC66T38tE1EH7bebK8tbbxdqKFVJXTm2TFWMsACWoXKHmJe1VJGpUnG5OTnuQHJvKqlEGrqmNlNrdwPjwY7A7Wxu71CRJvvXq4ty173aa3zavxyUTKvKqHlrAEW0CpU9hDrVWIydTMrWWYJO1mfFh579uvV9fWV/ubyVm/x/evnq6+erSw9WQxraTX1VqyZ42X2HdLsgHJoFSpr5OvA1hZ6aub7qwu93aJT7vpbiIeDv4WAe3O7VYD5gVYB3IBWAdyAVgHcgFYB3IC90QDcgHkVwA1oFcANaBXADWgVwA1oFcANLW912O10usPo82M/F4B7aWCr9tstlUKq0B6Na1UJL7unS2VIFVqkaa1Gm0eUtzrsdjpB0OGRoB+HOXk0jhSpQjs0a280yTyhpu6BC/7XfNjtcG4S7Ac8kyRShRZq0t5o5ovNerUf8KCf/j6fqhmTHgngsAbtjZZ+vGQvQ6QK86dJe6MlFyqbV3Opmvtgc8yRKrRQo/ZGKxiSnWLzqUbr1+hlpiAVKVKF9mja68AAMBtaBXADWgVwA1oFcANaBXAD9lsCcAPmVQA3oFUAN/wDSB/VszOevdYAAAAASUVORK5CYII=" alt="" />

2、分组:

  无全局匹配分组时,match和exec返回结果相同。由于正则表达式采用了括号分组,所以在返回匹配结果的同时,依次返回该结果的所有分组:

var s = "aaa1 bbb2 ccc3";
var reg = /\b(\w+)(\d{1})\b/;//两个分组,无g
var rs_match1 = s.match(reg);
var rs_match2 = s.match(reg);
var rs_exec1 = reg.exec(s);
var rs_exec2 = reg.exec(s);
console.log("match1:",rs_match1);
console.log("match2:",rs_match1);
console.log("exec1:",rs_exec1);
console.log("exec2:",rs_exec2);

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYYAAABZCAIAAAC1/RT8AAAG9ElEQVR4nO3dfW4bRRjH8bnRnGjukSvMDXIGhNCg1qiqQAFKWpqqilomgaYqlaACVRAVqih9Cxn+8K731d6d3Vnvk+T7URTFzng9G8k/Tcbr51EBAMRQc08AAArqZwAQg1USAEGIJACCEEkABCGSAAhCJAEQ5GZHkgtKZV/W137ng9bB2aBtuqczwbhgVHA9HzB+DvFH6JzkugE+6PyPmfBvhptGSCR5q5VupEII3tq+L98Qwu37xzu7i+bX7fvH7Q9wQa176TkTrA9Gh+ak+vO2dHQftAneBtP7jMbPIfoIbZOMPAtDJGGErUaScxtejc7WIskZpZTq/wIOYWd3cfbuw+Xl5cWnTx/en5+9/efN6etnz5/v7C7WPOe6SPLBuupLMZ5RlaM7G3wItv+Ldfwc4o/QnGT8WRBJGGObkeTMpnxpRFL3Q+p2dhf/XVx8/PD+/OytUurv16/+/P3Fb78ex0dSIs5MefRtiTwLIgljJIkkb7XWWilljMkXNt5qpYplznLJo8rrnvyu7Laz1hpVWxjVIsmZjcumnd3Fu/Ozt/+env71h1Lq1ctnL0+enBwdpIgkV98msTq7x60ZEJJH0qA5JHhaIgnbk2aV5K02bvXduiJLvDWrxU8lX5zJ9o7ye53Js6x4RPwq6c3pa1X19NFegkiyJtuOMSZ7ZH5+2cZ4fUA2/ZSRNGwO4xFJ2KJUkWSsX323LpSWRbo1kirBs/xt/o9b+T+46Eha/qf24pdDpdRPj787fHD34PtbCSLJ2/zNufzVbqrv1TUHhNSRNGwO4xFJ2KKJIqm0BmpE0nKTu/hFFkFpIunlyZMTf3B0eE8p9eiHrx7suf2vPx8dST5oU/lh+U5W8UNjQD79dJE0dA7jEUnYolR7Sdk+krbWKKWtX20UmWL7J9teqt7KbjuTLahWP7Svs7r2kh4+vPf00d7j/Ts/fvvl/W++uHf3szuL8ZG02rXRweigbbFrY0x2iPqAxhKm8dym9bKHtHOo8lZHvYPZ4yzaH0EkYTAh1yWlcWvft16XdGv/qP0Bmy6VnF7re4zTirvOK/LYXCqJBK5VJF0dzqi4S67G81ar2HUZsHVEEgBBiCQAghBJAAQhkgAIQjsAAIKwSgIgCJEEQBAiCYAgRBIAQYgkAIJcq0gaVnubdgAVtAPArIREUls7gFpdyh7S1d6mHQDtADAPue0AVqWSyiWXNktXe5t2ADnaAWC7xLYD8FbrvFZivQDlOlPW3h6EdgBAJOHtAEK9endXCbepam/TDqA3IgljCG8HUKyV+piw9jbtAHojkjCG5HYAcXkUJqy9TTuAiOFEEsaQ2w6gCK3e1Vknq71NO4CI4UQSxhDbDqC0+VQstDr2kobV3qYdwCa0A8B2CbkuaSa0A0h5bC6VRAI3O5JmQzsAoB2RBEAQIgmAIEQSAEGovQ1AEFZJAAQhkgAIQiQBEIRIAiAIkQRAkJsVSav6Qi0flY8ujN1pgrrX6Y/QOcm1A5wpPo5zDQrVQQhhkRTzsa/o4v8h2PaPo4YhhbHbn6Bav2183es4icp7x5zFsiAKkYRU5ETSsjJAXMG2uOL/GyIpujB2w/KlWRw9Rd3rWOPLe8efBZGEtOREUggxZbbDgOL/m1ZJSfhgrsFH4OPOgkhCWskiKS9/pLP6a1opZVzpE+/VAaFRe3s5phJJba2UCtHF/6MiqbOsdX1ASB9JQ+YwHpGEOSWKpCJLVtVsvTXWV2+VBzRqb1dH9RBd/D8ikjrLWjcGhJA6kobNYTwiCXNKFEnrakA2lkT5gPbwiY2kuOL/UaukzrLWLeUWU6+ShsxhPCIJc0q+Slr1j3TGuOL+xoBG7e3aqG7Rxf/7R1JnWev6gGz6KSNp4BzGI5Iwp+R7Scq4UgXDVUntZj/ttbeLzaXOvaS44v9R/7h1lLVuDOjqDhJf9zp+Do0jRJf3ju9xQiQhLVnvuEWJLv6/+VLJyU1Z93qdKct7c6kkpnCFI+kKmaPu9QzlvYHxiCQAghBJAAQhkgAIQiQBEIR2AAAEYZUEQBAiCYAgRBIAQYgkAIIQSQAEucKRNKz2Nu0AqmgHAFkERVJeUqnvZ8FS1t6mHQDtACCDmEgqVVbS/V5RKWtv0w4gu4N2AJiZmEhyJv/Yerny7SbT1t4egnYAwFiy2gEs7+5fwm2y2tu0A+g9mkhCUrLaAZTWSt2mrL1NO4Deo4kkJCWpHUBMHoVJa28H2gH0Hk0kISk57QCK1VLP6qwT1t6mHUD/0UQSkpLSDqBoBlDaXdq8lzSs9jbtADahHQDmJuYdt62gHUDKY3OpJCZwsyJpLrQDAHoikgAIQiQBEIRIAiAItbcBCMIqCYAgRBIAQYgkAIIQSQAE+R/bI0cL20sYRwAAAABJRU5ErkJggg==" alt="" />

  全局匹配分组时,match和exec返回结果不同。match会返回所有匹配到的结果;而exec会返回本次匹配到的结果,若表达式中出现分组,则会依次返回本次匹配的全部分组:

var s = "aaa1 bbb2 ccc3";
var reg = /\b(\w+)(\d{1})\b/g;
var rs_match1 = s.match(reg);
var rs_match2 = s.match(reg);
var rs_exec1 = reg.exec(s);
var rs_exec2 = reg.exec(s);
var rs_exec3 = reg.exec(s);
var rs_exec4 = reg.exec(s);
console.log("match1:",rs_match1);
console.log("match2:",rs_match1);
console.log("exec1:",rs_exec1);
console.log("exec2:",rs_exec2);
console.log("exec3:",rs_exec3);
console.log("exec4:",rs_exec4);

aaarticlea/png;base64,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" alt="" />