【问题标题】:regex into array javascript正则表达式到数组javascript
【发布时间】:2016-03-31 12:08:49
【问题描述】:

我有一个将地址拆分成数组的 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]

【问题讨论】:

  • JS 正则表达式需要/.../ 正则表达式分隔符:var pattern = /^([a-zA-Z0-9 '-]*) ([0-9-]{1,10})([a-zA-Z0-9\/ -]*)$/; 和(周围没有引号)。请提供示例输入。
  • 也就是说,你不能只是在 JS 和 PHP 之间复制粘贴一个正则表达式,它们略有不同

标签: javascript arrays regex split match


【解决方案1】:

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

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

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

查看 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];

【讨论】:

  • 很高兴它对你有用。如果我的回答对您有帮助(请参阅How to upvote on Stack Overflow?),也请考虑投票,因为现在您拥有此特权。
猜你喜欢
  • 2012-01-16
  • 2019-10-18
  • 2014-07-12
  • 1970-01-01
  • 2012-01-02
  • 2012-03-10
  • 2013-03-16
  • 2012-11-23
  • 2019-04-29
相关资源
最近更新 更多