【问题标题】:Angularjs pattern "Unexpected next character"Angularjs模式“意外的下一个字符”
【发布时间】:2019-07-26 08:56:15
【问题描述】:

这是我收到的关于以下输入的错误: Error: [$parse:lexerr] Lexer Error: Unexpected next character at columns 0-0 [^] in expression [^$|^[0-9]{4}\-[0-9]{2}\-[0-9]{3}$].

<input
  type='text'
  name="precision"
  ng-model="$ctrl.list[$index][$ctrl.idFieldName]"
  ng-required
  ng-blur="$ctrl.validateInput($ctrl.list[$index][$ctrl.idFieldName], $index)"
  ng-pattern="^$|^[0-9]{4}\-[0-9]{2}\-[0-9]{3}$" />

【问题讨论】:

  • 尝试将其转换为字符串或 RegExp 文字,即。 ng-pattern="'^$|^[0-9]{4}\-[0-9]{2}\-[0-9]{3}$'" (带 ' ')或 ng-pattern ="/^$|^[0-9]{4}\-[0-9]{2}\-[0-9]{3}$/"。不能肯定地说,但它似乎是问题所在,如果我们有一个可行的例子,可以肯定地说。
  • @Yftach 你是对的。但没有意义的是,我在同一个项目中有另一个完美的工作示例,使用语法ng-pattern="^$|^[0-9]{4}\-[0-9]{2}\-[0-9]{3}$"
  • 好吧,至少以前可以正常工作,但可能因为最近的更新而不再可用。很奇怪。

标签: angularjs validation input


【解决方案1】:

应该是 ng-pattern 而不仅仅是模式,

<input
  name="precision"
  ng-model="$ctrl.list[$index][$ctrl.idFieldName]"
  ng-required
  ng-blur="$ctrl.validateInput($ctrl.list[$index][$ctrl.idFieldName], $index)"
  ng-pattern="^$|^[0-9]{4}\-[0-9]{2}\-[0-9]{3}$" />

【讨论】:

  • 我试过了,但不幸的是同样的错误仍然存​​在。
【解决方案2】:

模式必须写成正则表达式

ng-pattern="/^$|^[0-9]{4}\-[0-9]{2}\-[0-9]{3}$/"

<input
 type='text'
 name="precision"
 ng-model="$ctrl.list[$index][$ctrl.idFieldName]"
 ng-required
 ng-blur="$ctrl.validateInput($ctrl.list[$index][$ctrl.idFieldName], $index)"
 ng-pattern="/^$|^[0-9]{4}\-[0-9]{2}\-[0-9]{3}$/" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-18
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多