在字符串的开头和结尾查找特殊字符和空格的正则表达式是什么?

时间:2019-06-10 20:08:01

标签: javascript regex

我正在尝试编写一个验证器来检查是否存在空格和/或特殊字符,但是我不确定如何继续。

到目前为止,这就是我所拥有的:

const isValid = !/(^\s!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?|!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?\s$)/g.test(control.value)

但是它似乎不起作用。我确定我的正则表达式做错了什么,但我不知道该怎么做。

3 个答案:

答案 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

无需在这些键上退格:
 ! @ # $ % ^ & * ( ) , . ? " : { } | < >