我正在尝试使用正则表达式来验证英寸值的文本输入格式:
<input name="widthfield" type="text" ng-pattern="/^([0-9]{1,2}((\'\')?|(\'\'[0-9]\/[0-9]{1,2})*))|([0-9]{1,2}(\.[0-9]{1,2})?)$/" placeholder="ie 18''1/2 or 18.25" ng-model="data.boardWidth" ng-required="true"/>
它不起作用,你能帮我检查我的正则表达式吗?
如果我把它分成两部分:
/^([0-9]{1,2}((\'\')?|(\'\'[0-9]\/[0-9]{1,2})*))$/
和
/^([0-9]{1,2}(\.[0-9]{1,2})?)$/
然后他们两个都分开工作。
我需要格式为英寸或小数英寸 18.25或18''3 / 4
由于
答案 0 :(得分:1)
运算符|
隐式地封装了两个备选方案。所以这两个是相同的:
(regex1)|(regex2)
regex1|regex2
在你的情况下,这意味着替代1以^
开头但不以$
结尾,反之亦然替代2.如果我改变它,它对我来说很好:
/^([0-9]{1,2}((\'\')?|(\'\'[0-9]\/[0-9]{1,2})*))$|^([0-9]{1,2}(\.[0-9]{1,2})?)$/
答案 1 :(得分:0)
您可以使用
ng-pattern="(\\d{1,2}(|\\x27\\x27|(\\x27\\x27\\d/\\d{1,2})*)|\\d{1,2}(\\.\\d{1,2})?)"
撇号应该用\x27
表示。 如果您有双引号,请将\x27\x27
替换为\x22
。
当您将模式作为字符串传递时,angular会自动添加^
和$
锚点,因此无需添加它们。