首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >regex不适用于数据绑定

regex不适用于数据绑定
EN

Stack Overflow用户
提问于 2017-06-05 21:18:24
回答 1查看 374关注 0票数 1

我在用角做验证,

代码语言:javascript
运行
复制
<div ng-if="field.required !== 'true'">
   <input id="fld-{{field.id}}" name="{{field.id}}" ng-model="$ctrl.configuration[$ctrl.selectedPlatform][field.id]" ng-pattern="{{field.regex}}">
</div>

这是字段数据:

代码语言:javascript
运行
复制
{
  "id": "addItemToHistoryAfterNSeconds",
  "label": "Add Video to History after how many seconds?",
  "type": "string",
  "default": "5",
  "regex": "/^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/"
}

因此,为了测试目的,这基本上与数值相匹配。

但是,验证没有通过,显示ng无效。

当我直接编写ng-patter="/^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/"时,验证就通过了。

有人知道为什么吗?

更新:

我只想要有效的数值,所以我将使用:

代码语言:javascript
运行
复制
/^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-05 21:33:22

在HTML和JS代码中如何定义regex是有区别的。如果ng-pattern允许您使用单反斜杠表示文字反斜杠的"/regex-here/"表示法,那么JS代码不会使用C字符串定义字符串(即可以使用转义序列的字符串文本)。

在那里,您可以使用构造函数初始化(使用字符串),也可以使用regex文字。

请记住,您需要在字符串文本中使用双反斜杠,在regex文字中使用单个反斜杠来表示文字反斜杠( regex转义所需)。

代码语言:javascript
运行
复制
"regex": "^\\+?([0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)$"
"regex": /^\+?([0-9]+(?:\.[0-9]*)?|\.[0-9]+)$/

应该行得通。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44377858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档