带有正则表达式的replace()与双括号内的AngularJS格式字符串

时间:2018-12-20 19:15:59

标签: javascript angularjs regex replace

我正在尝试在使用AngularJS填充的表中格式化MAC地址:

<tr ng-repeat="dev in devices">
<td>{{dev.mac.replace(/(.{2})/g,"$1:")}}</td>
</tr>

{{dev.mac}}可以正常工作(除了未格式化外),但是当我添加.replace()函数时,它会中断。我尝试根据收到的错误转义正斜杠,但无济于事。 .replace()是否在浏览器中不可用,或者双括号中的正则表达式语法不同,或者我在做什么错?

目标是在双括号内尽可能轻松地将AABBCCDDEEFF转换为AA:BB:CC:DD:EE:FF。作为一个额外的问题,我如何防止正则表达式中的尾部“:”(当前显示AA:BB:CC:DD:EE:FF:)?

编辑:添加错误消息

  

错误:$ parse:语法       语法错误

     

语法错误:令牌'/'不是主列表达式的第20列   表达式[dev.mac.replace(/(。{2})/ g,“ $&:”)]开始于   [/(。{2})/ g,“ $&:”]。

这似乎表明正斜杠是造成此问题的原因,但是就像我说的那样,转义它无济于事。

1 个答案:

答案 0 :(得分:1)

与其像这样运行替换内联,不如将其抽象为一个函数,该函数应该可以解决您因无法正确解释而遇到的所有问题。本文显示了在作用域上声明要在此处调用的函数的正确语法:function call inside Angular double curly braces,应该是这样的

$scope.fixMacAddress = function(addr)
{
   return addr.replace(/(.{2})/g,"$1:")
}

{{ fixMacAddress(dev.mac) }}