我正在尝试在使用 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:)?
编辑:添加错误信息
Error: $parse:syntax Syntax Error
Syntax Error: Token '/' not a primary expression at column 20 of the expression [dev.mac.replace(/(.{2})/g,"$&:")] starting at [/(.{2})/g,"$&:"].
这似乎表明正斜杠导致了问题,但正如我所说,转义它没有帮助。
最佳答案
与其像那样运行内联替换,不如将其抽象为一个函数,这样可以解决您遇到的任何无法正确解释的问题。本文展示了在此处调用的作用域上声明函数的正确语法:function call inside Angular double curly braces ,应该是这样的
$scope.fixMacAddress = function(addr)
{
return addr.replace(/(.{2})/g,"$1:")
}
和
{{ fixMacAddress(dev.mac) }}
关于javascript - 使用带正则表达式的 replace() 在双括号内使用 AngularJS 格式字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53874741/