我需要我的输入字段服从这两个表达式:
1 -/^[^.?\/:*<>|"']*[^?\/:*<>|"']*[^.?\/:*<>|"']+$/
2 -/^[^s].*/
- 表示输入不能有这些特殊字符和不能以
.
结尾 - 表示输入不能以空格开头
有没有一种方法可以使用这两个表达式:
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.