RegEx -多个表达式



我需要我的输入字段服从这两个表达式:

1 -/^[^.?\/:*<>|"']*[^?\/:*<>|"']*[^.?\/:*<>|"']+$/

2 -/^[^s].*/

  1. 表示输入不能有这些特殊字符和不能以.
  2. 结尾
  3. 表示输入不能以空格开头

有没有一种方法可以使用这两个表达式:

Validators.pattern(/^[^.?\/:*<>|"']*[^?\/:*<>|"']*[^.?\/:*<>|"']+$/ && /^[^s].*/)])]

您可以组合多个验证器:

Validators.compose(
Validators.pattern('<pattern A>'),
Validators.pattern('<pattern B>'),
)

如果去掉所有不必要的反斜杠,/^[^.?\/:*<>|"']*[^?\/:*<>|"']*[^.?\/:*<>|"']+$/可以写成/^[^.?\/:*<>|"']*[^?\/:*<>|"']*[^.?\/:*<>|"']+$/

然后,/^[^s].*/正则表达式只要求字符串以非空白字符开头。

所以,你所需要做的就是在开头添加一个(?=S):

Validators.pattern(/^(?=S)[^.?\/:*<>|"']*[^?\/:*<>|"']*[^.?\/:*<>|"']+$/)
//                   ^^^^^^

参见regex演示。

在开始时有两个可选的子模式似乎也太多余了,参见[^.?\/:*<>|"']*[^?\/:*<>|"']*。将其进一步缩小为

是有意义的。
Validators.pattern(/^(?=S)[^?\/:*<>|"']*[^.?\/:*<>|"']+$/)

  • ^-起始字符串
  • (?=S)-要求第一个字符不是空格的字符
  • [^?\/:*<>|"']*—除?/:*<>|"'以外的零个或多个字符
  • [^.?\/:*<>|"']+—除.?/:*<>|"'以外的一个或多个字符
  • $- end of string.

最新更新