我在用角做验证,
<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>
这是字段数据:
{
"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]+)$/"
时,验证就通过了。
有人知道为什么吗?
更新:
我只想要有效的数值,所以我将使用:
/^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/
发布于 2017-06-05 21:33:22
在HTML和JS代码中如何定义regex是有区别的。如果ng-pattern
允许您使用单反斜杠表示文字反斜杠的"/regex-here/"
表示法,那么JS代码不会使用C字符串定义字符串(即可以使用转义序列的字符串文本)。
在那里,您可以使用构造函数初始化(使用字符串),也可以使用regex文字。
请记住,您需要在字符串文本中使用双反斜杠,在regex文字中使用单个反斜杠来表示文字反斜杠( regex转义所需)。
"regex": "^\\+?([0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)$"
"regex": /^\+?([0-9]+(?:\.[0-9]*)?|\.[0-9]+)$/
应该行得通。
https://stackoverflow.com/questions/44377858
复制相似问题