Angularjs 正则表达式不';无法使用数据绑定
我正在用Angular进行验证Angularjs 正则表达式不';无法使用数据绑定,angularjs,regex,data-binding,Angularjs,Regex,Data Binding,我正在用Angular进行验证 <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> 因此,这基本上与数值匹配,用于测试目的 但
<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>
因此,这基本上与数值匹配,用于测试目的
但是,验证未通过,显示ng无效
当我直接写入ng patter=“/^[+]([0-9]+(?:[\\.][0-9]*)?\\\.[0-9]+$/”
时,验证通过
有人知道为什么吗
更新:
我只希望数值有效,因此我将使用:
/^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/
在HTML和JS代码中定义正则表达式的方式有所不同。如果
ng模式
允许您使用“/regex here/”
符号和单个反斜杠表示文字反斜杠,那么JS代码不会像您使用C字符串定义字符串那样使用字符串(即,可以使用转义序列的字符串文字)
在这里,您可以使用构造函数初始化(使用字符串)或正则表达式文本
请记住,您需要在字符串文本中使用双反斜杠,在正则表达式文本中使用单反斜杠来表示文本反斜杠(正则表达式转义需要)
应该有用。你可以尝试使用
“regex”:“*”
@WiktorStribiżew谢谢,有什么更新的想法吗?试试“regex”:“^[+]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)$”
。如果成功了,我想你已经知道为什么会这样了。另外,请尝试“regex:/^\+?([0-9]+(?:\[0-9]*)?\.[0-9]+)$/
@WiktorStribiżew谢谢,这确实有效!你能在回答中解释一下吗?这样我就可以把它标为答案了?
/^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/
"regex": "^\\+?([0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)$"
"regex": /^\+?([0-9]+(?:\.[0-9]*)?|\.[0-9]+)$/