正则表达式意外字符

时间:2015-12-10 13:56:47

标签: javascript angularjs regex

我生成了一个小的正则表达式,它应该检查输入文本是否采用以下格式之一。

  • 00:00
  • 00:00
  • 00:00
  • 00:00

甚至使用.代替:(即:00.00)。

所以我生成了以下内容:

([01]?[0-9]{1}|2[0-3]{1})\u0020*[:.]\u0020*[0-5]{1}[0-9]{1}

我在这里使用了这个工具:http://regexr.com/,一切似乎都没问题。

现在我通过ng-pattern="..."在我的角度表达式输入中使用它但是我在控制台中收到以下错误:

Error: [$parse:lexerr] Lexer Error: Unexpected next character  at columns 25-25 [\] in expression [([01]?[0-9]{1}|2[0-3]{1})\u0020*[:.]\u0020*[0-5]{1}[0-9]{1}].

我做错了什么?

修改

看看这里:http://regexr.com/3ccn5

似乎没问题,但是将它与AngularJS一起使用它允许错误的输入,即使我输入:22:2222222 for Angular它是正确的......它发生了什么?

2 个答案:

答案 0 :(得分:1)

尝试使用简单空格\u0020替换。没有必要转义空格字符,并且当将正则表达式作为字符串传递时总是存在危险,因为字符串解释反斜杠而不是正则表达式引擎会出现问题。

答案 1 :(得分:0)

你需要加倍\才能发挥作用:

([01]?[0-9]{1}|2[0-3]{1})\\u0020*[:.]\\u0020*[0-5]{1}[0-9]{1}