我正在尝试编写一个验证器来检查是否存在空格和/或特殊字符,但是我不确定如何继续。
到目前为止,这就是我所拥有的:
const isValid = !/(^\s!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?|!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?\s$)/g.test(control.value)
但是它似乎不起作用。我确定我的正则表达式做错了什么,但我不知道该怎么做。
答案 0 :(得分:1)
现在,您要尝试以相同的顺序将字符串与所有特殊字符放在开头或结尾。
您需要使用方括号告诉正则表达式您正在寻找这些字符之一,而不是全部。
(^[\s!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]|[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?\s]$)
答案 1 :(得分:1)
您可以改用下面的正则表达式进行检查吗?
/^[\s@!*$%&^#$()\-+_={}[\]/?><.,'";:`~|].*[\s@!*$%&^#$()\-+_={}[\]/?><.,'";:`~|]$/gm
您正在使用的正则表达式存在问题,例如未正确转义和未正确分组的字符。
使用regex builder构建正则表达式很容易,您可以在构建自身时了解每个字符的含义和用法。
答案 2 :(得分:0)
要检查开头和结尾是否没有特殊字符,您需要使用regex character class和[
到]
之间的字符。 ^
检查开始,$
检查结束。 或的管道|
确保检查开始和结束。
const isValid = !/^[\b\^\s\!\@\#\$\%\^\&\*\(\)\_\+\-\=\[\]\{\}\;\'\:\"\b\|\,\.\<\>\/\?]|[\b\^\s\!\@\#\$\%\^\&\*\(\)\_\+\-\=\[\]\{\}\;\'\:\"\b\|\,\.\<\>\/\?]$/.test(control.value)
在字符串和正则表达式中转义非特殊字符不会对结果产生任何影响,因此对所有字符加反斜杠更为安全(无错误)。它使代码更易于理解。它的执行速度不会变慢。
要逃避后退,您可以\b
,而不是\\
您不需要用于继续搜索的g
flag。
无需在这些键上退格:
!
@
#
$
%
^
&
*
(
)
,
.
?
"
:
{
}
|
<
>