我正在尝试在使用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,“ $&:”]。
这似乎表明正斜杠是造成此问题的原因,但是就像我说的那样,转义它无济于事。
答案 0 :(得分:1)
与其像这样运行替换内联,不如将其抽象为一个函数,该函数应该可以解决您因无法正确解释而遇到的所有问题。本文显示了在作用域上声明要在此处调用的函数的正确语法:function call inside Angular double curly braces,应该是这样的
$scope.fixMacAddress = function(addr)
{
return addr.replace(/(.{2})/g,"$1:")
}
和
{{ fixMacAddress(dev.mac) }}