正则表达式用于任何非零(有符号)整数(AngularJS 1.4.7)

时间:2019-03-10 01:01:10

标签: javascript angularjs regex ng-pattern

我正在尝试确定与任何非零有符号整数匹配的正则表达式模式(对于AngularJS 1.4 ngPattern):

value  matches
-----  -------
0      no
0000   no
0.5    no
.5     no
-34.3  no
1      yes
10     yes
9999   yes
076    yes
-1     yes
-10    yes
-999   yes

我在这里有一个 工作 版本: https://regex101.com/r/cT8nJ3/17

^-?(?!0+$)\d*$

不幸的是,我在AngularJS 1.4上遇到这些错误:

Error: [$parse:lexerr] Lexer Error: Unexpected next character  at columns 0-0 [^] in expression [^-?(?!0+$)\d*$].

如果我从模式的开头/结尾删除“ ^”和“ $”,我仍然会收到错误消息:

Error: [$parse:lexerr] Lexer Error: Unexpected next character  at columns 9-9 [\] in expression [-?(?!0+$)\d*].

不确定这是否是因为Angular 1.4中的正则表达式引擎不了解负面的前瞻性。...是否有一种模式可以在Angular 1.4中使用?


编辑

以下代码有效(如乔纳森·格雷建议的那样,缺少前导/尾随斜杠。...提醒自己:彻底阅读 最新 文档[它没有显示直到1.6.7文档]):

data-ng-pattern="/^-?(?!0+$)\d*$/"

谢谢所有评论/回答/发现重复的人!

1 个答案:

答案 0 :(得分:-2)

您可以使用

^(?=.*[1-9])-?\d+$
  • ^-字符串的开头。
  • (?=.*[1-9])-非零值的条件。
  • -?-在开始时匹配-。 (?使其为可选)
  • \d+-匹配数字0到9一次或多次。
  • $-字符串结尾。

Demo