4

在我的 Angularjs 应用程序中,我需要有两种模式的正则表达式,用于具有以下条件的表单验证。

模式1:

输入框应该接受没有空格的字母数字,它还应该允许用户像~!@#$-_字符串中的任何位置一样使用字符,除了应该允许这些字符之外的其他字符,例如(%, &, ^ etc). 它也不应该允许前导/尾随空格。

例子 :

 ab@4_w    :  valid
 sd!tye123  : valid
 sd%tye123  :  Invalid
 sd*tye123  :  Invalid

$scope.pattern1 = [\w~!@#\$-]+

模式 2:应该只允许字母数字,没有空格,并且没有其他字符,包括 (_)。它也不应该允许前导/尾随空格。

例子 :

  a4hgg5  : Valid
  a4_6hy   : Invalid
  a@yb    : invalid

$scope.pattern2 = [\w]+

$scope.pattern1并且$scope.pattern2 需要修改以满足我的上述要求。

4

2 回答 2

1

尝试

^[\w~!@#\$-]+$

解释

  1. ^字符串开头
  2. [\w~!@#\$-]+$您想要的任意数量的字符,(注意需要转义\$
  3. $字符串结束

请参阅Regex101 中的操作。如果您希望空字符串有效,请指定*而不是+量词。此外,使用时\w不需要设置i标志,因为它已经涵盖了大写和小写字母。

于 2016-11-14T08:16:54.370 回答
1

它不应允许前导/尾随空格。

在这两种情况下,将ng-trim="false"属性添加到input元素。

输入框应该接受没有空格的字母数字,并且它还应该允许用户像~!@#$-_字符串中的任何位置一样使用字符,除了应该允许这些字符之外的其他字符,例如(、%等)。&^

您拥有的模式是正确的,但不建议转义不必转义的字符,请使用:

^[\w~!@#$-]+$

哪里\w匹配[a-zA-Z0-9_]

注意:如果您将模式作为字符串传递,请不要添加^$锚点,而是将反斜杠加倍:"[\\w~!@#$-]+".

应该只允许没有空格的字母数字和包括 ( _) 在内的其他字符。

这要容易得多:^[a-zA-Z]+$. 与上述关于锚点的评论相同。

于 2016-11-14T09:24:44.860 回答