我正在尝试确定与任何非零有符号整数匹配的正则表达式模式(对于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*$/"
谢谢所有评论/回答/发现重复的人!
答案 0 :(得分:-2)
您可以使用
^(?=.*[1-9])-?\d+$
^
-字符串的开头。(?=.*[1-9])
-非零值的条件。-?
-在开始时匹配-
。 (?使其为可选)\d+
-匹配数字0到9一次或多次。$
-字符串结尾。