javascript - 使用带正则表达式的 replace() 在双括号内使用 AngularJS 格式字符串

标签 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:)?

编辑:添加错误信息

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/

相关文章:

javascript - 我想在提交表单后重定向当前页面......它应该返回使用 php 发送请求的页面

javascript - MUI 选择带标签,但选择没有 ID

regex - Rails验证RGB十六进制

c# - Regex.Replace 替换为匹配的字符串

php - 使用 jQuery 从 HTML 页面重定向到 PHP 页面

javascript - 未找到命令 eslint --init,为什么?

javascript - 始终在 $http.post 中传递 Post 变量

c# - 无法将类型为 'Newtonsoft.Json.Linq.JObject' 的对象转换为类型 'System.Collections.Generic.Dictionary` 2[System.String,System.Object]'

javascript - 调整 IFRAME 大小以删除滚动条

Java regex plus 开头是可选的