regex转换为数组javascript

regex into array javascript

本文关键字:javascript 数组 转换 regex      更新时间:2023-10-04

我有一个php脚本,可以将地址拆分为一个数组:

$address = 'ADDRESS';
$pattern = '#^([a-zA-Z0-9 ''-]*) ([0-9'-0-9]{1,10})([a-zA-Z0-9'-/ ]{0,})$#';
$address_details = array();
preg_match($pattern,$address, $address_details);

这个脚本运行良好,但是,我想在javascript函数中使用同样的东西。我试过这个

var address = 'ADDRESS';    
var pattern = '#^([a-zA-Z0-9 ''-]*) ([0-9'-0-9]{1,10})([a-zA-Z0-9'-/ ]{0,})$#';
var address_details = address.match(pattern);

这不起作用,并且在address_details上返回null。目的是能够调用address_details[1]和address_details[2]

JavaScript正则表达式需要/.../正则表达式分隔符,然后,此正则表达式文字表示法周围不能出现引号。此外,你的模式可以增强一点:

var pattern = /^([A-Z0-9 '-]*) ([0-9-]{1,10})([A-Z0-9'/ -]*)$/i;

不需要在[0-9'-0-9]中重复[0-9],字符类末尾的连字符不必转义,使用/i不区分大小写的修饰符可以将[a-zA-Z]简化为[a-z]{0,}限制量词等于*

参见JS演示:

var address = 'Address 1 1234567890/Text-Here1 and here';    
var pattern = /^([A-Z0-9 '-]*) ([0-9-]{1,10})([A-Z0-9'/ -]*)$/i;
var address_details = address.match(pattern);
document.body.innerHTML = "Group 1: " + address_details[1] + "<br/>Group 2: " + address_details[2] + "<br/>Group 3: " + address_details[3];