声明正则表达式的更好方法

Better way to declare regex

本文关键字:方法 更好 正则表达式 声明      更新时间:2023-09-26

我有这些不同国家的正则表达式,

var ukM = /(070|071|072|073|074|075|076|077|078|079)'d{7,8}$/;
var ireM = /(083|085|086|087|089)'d{7,8}$/;
var ireL = /(01|021|022|023|024|025|026|027|028|029|0402|0404|041|042|043|044|045|046|047|049|0504|0505|051|052|053|056|057|058|059|061|062|063|064|065|066|067|068|069|071|074|090|091|093|094|095|096|097|098|099)'d{7,8}$/;
var usaM = /(713|071|072|073|074|075|076|077|078|079)'d{7,8}$/;
var usaL = /(201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216|217|218|219|224|225|226|227|228|229|231|234|236|239|210|211|212|213|214|215|216|217|218|219|224|)'d{7,8}$/;

有更好的方式来声明这些吗?一个可以表示世界上每个国家的正则表达式?

谢谢

您可以使用字符类来减少正则表达式,例如

var ukM = /07[0-9]'d{7,8}$/;
var ireM = /08[35-9]'d{7,8}$/;
...

您可以将其更改为:

var ukM = /(07'd)'d{7,8}$/;
var ireM = /(08[35-79])'d{7,8}$/;
var ireL = (01|2[1-9]|040[24]|04[1-79]|050[45]|05[1-36-9]|06[1-9]|07[14]|09[0-9]'d)'d{7,8}$/;
var usaM = /(713|07[1-9])'d{7,8}$/;
var usaL = /(20[1-9]|2[12]'d|23[1469])'d{7,8}$/;