【问题标题】:Undesirable result of use of ng-pattern (Angular.JS), with unicode characters使用带有 unicode 字符的 ng-pattern (Angular.JS) 的不良结果
【发布时间】:2013-10-23 22:11:41
【问题描述】:

我正在使用一个 ng 模式,它的输入字段应该只接受希伯来字符。

我找到了希伯来字符的 unicode 数字。

这是我的模式:

$scope.onlyHebrewPattern = /[\u05D0-\u05F3]+/g;

还有我的表单输入:

<input tabindex=1 type="text" ng-disabled="disableButtons" name="firstname" ng-minlength="2" ng-maxlength="15" ng-model="register.firstName" placeholder="first name" ng-pattern="onlyHebrewPattern" required title="please enter your name">

现在对于大多数输入,该模式将起作用,并且不会在 $scope.firstname 中填充错误结果,例如:“abcd”。

但有一些输入,例如:“שדas”,由于某种原因被模式所接受。

我相信问题取决于模式定义。一定有问题,但我确信 u05D0-u05F3 确实是我在模式中需要的范围。那么我的问题是什么?

【问题讨论】:

标签: javascript regex angularjs unicode


【解决方案1】:

试试这个:

$scope.onlyHebrewPattern = /^[\u05D0-\u05F3]+$/g;

你的匹配任何带有希伯来字符的字符串。

【讨论】:

  • 看起来这解决了问题。你能解释一下为什么会这样吗?
  • 特殊的正则表达式字符 ^ 和 $ 分别表示“仅在开头”和“仅在结尾”。您所说的模式“匹配包含(hebrew-char)(一次或多次)的字符串。但是“ab(hebrew)”匹配该描述 - 它包含一个希伯来字符。使用(仅在开始时) )(hebrew)(one-or-more)(only-at-end) 强制所有字符为希伯来语,因为希伯来语字符必须紧挨着开头和结尾,并且不能有任何中间的非希伯来字符。
  • 你好。我不知道为什么,但这种模式似乎不能正常工作。有时可以的输入由于某种原因被拒绝。这是什么原因?如果我想添加放置“-”和“'”字符的选项,我将如何将它们添加到正则表达式模式中?
  • 如果您不向我们提供一些信息,就无法判断出了什么问题。用一个仍然不起作用的例子来更新问题怎么样。
  • 要添加更多允许的字符,请将它们列在方括号内。 “-”应该放在开头,像这样:/^[-'\u05D0-\u05F3]+$/g
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-25
  • 1970-01-01
  • 2013-10-07
相关资源
最近更新 更多