我的目标是创建一个角度Validator
来禁止连续的空格;
当前我正在使用Validators.pattern('^[a-zA-Z0-9]+( [a-zA-Z0-9]+)*$')
,该问题已解决。唯一的问题是,它也不允许使用我不想要的特殊字符。
text text
无效,因为有多个连续的空格text α
是一个特殊字符,但α
不应引发错误事件答案 0 :(得分:1)
您可以使用
Validators.pattern('\\s*\\S+(?: \\S+)*\\s*') // if at there can be 0 or more leading/trailing whitespaces
Validators.pattern('\\s?\\S+(?: \\S+)*\\s?') // if at there can be 1 or 0 leading/trailing whitespaces
或者,正则表达式文字等效项:
Validators.pattern(/^\s*\S+(?: \S+)*\s*$/) // if at there can be 0 or more leading/trailing whitespaces
Validators.pattern(/^\s?\S+(?: \S+)*\s?$/) // if at there can be 1 or 0 leading/trailing whitespaces
它将被解析为
^
-字符串的开头(隐含字符串模式,它会自动添加)\s*
-超过0个空格\S+
-1个以上非空格字符(?: \S+)*
-一个空格的0个或多个重复,后跟1+个非空白字符\s*
-超过0个空格$
-字符串结尾(隐含字符串模式,它会自动添加)。如果在非空白块之间允许任何空白,请在模式中用\s
(或\\s
)替换文字空间。
答案 1 :(得分:0)
您可以使用\s*([^\s]+\s?)*\s*
作为图案。
这是:0个或多个空格,后跟零个或多个(一个或多个非空格字符,然后最多一个空格),然后是0个或多个空格。