正则表达式验证输入的英寸值

时间:2016-04-26 12:49:50

标签: angularjs regex

我正在尝试使用正则表达式来验证英寸值的文本输入格式:

<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

由于

2 个答案:

答案 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会自动添加^$锚点,因此无需添加它们。

这是sample regex demo