Angularjs 正则表达式

Angularjs regular expression

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

模式 1 :

输入框应该接受没有 space 的字母数字,它还应该允许用户在字符串中的任何地方使用像 ~!@#$-_ 这样的字符,除了这些字符以外的其他字符应该被允许像 (%, &, ^ etc)。它不应该让 leading/trailing 白色 space 也。

示例:

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

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

模式二: 应该只允许字母数字,没有 space,也没有其他字符,包括 (_)。它不应该让 leading/trailing 白色 space 也。

示例:

  a4hgg5  : Valid
  a4_6hy   : Invalid
  a@yb    : invalid

$scope.pattern2 = [\w]+

$scope.pattern1$scope.pattern2需要修改才能满足我上面的要求

尝试

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

说明

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

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

It should not allow leading/trailing whitespace.

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

The input box should accept alphanumeric with no space and it should also allow the user to use the characters like ~!@#$-_ any where in the string, except these characters non of the other characters should be allowed like (%, &, ^ etc).

你的模式是正确的,但是不建议转义不需要转义的字符,使用:

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

其中 \w 匹配 [a-zA-Z0-9_].

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

Should allow only alphanumeric with no space and no other characters including (_).

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