const regex = /^([pP][oO] +[bB][oO][xX]|[pP][rR][iI][vV][aA][tT][eE] +[bB][aA][gG]) +(\d+).*|^([\/\wÀ-ɏḀ-ỹ .'-]*, *)?(\d[\/\w]*)[\/\wÀ-ɏḀ-ỹ .,'#-]*$/mg;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('^([pP][oO] +[bB][oO][xX]|[pP][rR][iI][vV][aA][tT][eE] +[bB][aA][gG]) +(\\d+).*|^([\\\/\\wÀ-ɏḀ-ỹ .\'-]*, *)?(\\d[\\\/\\w]*)[\\\/\\wÀ-ɏḀ-ỹ .,\'#-]*$', 'mg')
const str = `Street address:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
224B Clarence Street, Vogeltown, Wellington 6023
Rural address:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯
128 Valley Road North, RD 2, Middlemarch 9597
PO Box:
¯¯¯¯¯¯¯
PO Box 17999, Greenlane, Auckland 1546
Street – with unit:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
3/123 Johnstone Street West, Point Chevalier, Auckland 1022
Rural address with unit:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
8/56 Maple Boulevard, RD 2, Wanaka 9382
Private Bag:
¯¯¯¯¯¯¯¯¯¯¯¯
Private Bag 93899, Auckland 0753
Street – with building name:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Level 2 Colombo House, 3A/1222 Colombo Street, St Albans, Christchurch 8014
Rural address – with building name:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Totârä Farm, 2/12543 Farm Road, RD 1, Outram 9073
Rural address – with c/o:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
c/o James Bond, 2/12543 Farm Road, RD 1, Outram 9073
Other addresses around the world:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
813 Howard Street, Oswego, NY 13126, USA
1 Beacon Street, 33rd Floor, Boston, MA 02108, USA
Hagagatan 1 vi, SE-113 49 Stockholm, Sweden
John A. Smith, ACME Innovations Inc., PO BOX 1033, Los Angeles, CA
c/o Henry Roth, 50 Oakland Ave,#206, A City, Florida, 32104, USA
10 Downing Street, London, Greater London, SW1A 2AA, United Kingdom
Av. de Senalèche 27, 1009 Pully, Switzerland
17, Rue Bergère, 75009 Paris, France
11 Bis Av. Gabriel Péri, 38150 Roussillon, France
Apostel-Paulus-Strasse 7, 10823 Berlin, Deutschland
Château Brillant, 75000 Paris, France
Crap data:
¯¯¯¯¯¯¯¯¯¯
\$^srflkwjeras %
894
879D
7895/465
5465 D
4565 D\$ wer
House name, 45
Help me please!`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions