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

Javascript 在字符串的开头和结尾查找特殊字符和空白的正则表达式是什么?,javascript,regex,Javascript,Regex,我正在尝试编写一个验证器来检查是否有空格和/或特殊字符,但我不确定如何继续 到目前为止,我的情况如下: const isValid = !/(^\s!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?|!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?\s$)/g.test(control.value) const isValid=/(^\s!@$%^&*(\\+\-=\[\]{};:“\\\\\\\,.\/?\!@

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

到目前为止,我的情况如下:

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

但它似乎不起作用。我肯定我的正则表达式有问题,但我不知道是什么。

现在,您正在尝试以相同的顺序将字符串与开头或结尾的所有特殊字符进行匹配

您需要使用括号告诉正则表达式您正在查找其中一个字符,而不是所有字符


(^[\s!@$%^&*(^[\s!@-=\[\]{};:“\\\\\,.\/?]\[!\\\\$%^&*(^[\s!\+\-=\[\]{};:“\\\\\,.\/?\s]$)
现在,您正在尝试以相同的顺序将字符串与开头或结尾的所有特殊字符进行匹配

您需要使用括号告诉正则表达式您正在查找其中一个字符,而不是所有字符


(^[\s!@$%^&*(^[\\+\-=\[\]{};:“\\\\\,.\/?]\[!\\\\$%^&*(^[\s!\+\-=\[\]{};:“\\\\\,.\/?\s]$)

是否可以改用下面的正则表达式并检查:

/^[\s@!*$%&^#$()\-+_={}[\]/?><.,'";:`~|].*[\s@!*$%&^#$()\-+_={}[\]/?><.,'";:`~|]$/gm

/^[\s@!*$%&^#$()\-+\={}[\]/?>您是否可以使用下面的正则表达式并检查:

/^[\s@!*$%&^#$()\-+_={}[\]/?><.,'";:`~|].*[\s@!*$%&^#$()\-+_={}[\]/?><.,'";:`~|]$/gm

/^[\s@!*$%&^#$()\-+\={}[\]/?>检查开头和结尾是否没有需要与
[
之间的字符一起使用的特殊字符
^
检查开头,
$
检查结尾。管道
|
用于确保检查开头和结尾

const isValid = !/^[\b\^\s\!\@\#\$\%\^\&\*\(\)\_\+\-\=\[\]\{\}\;\'\:\"\b\|\,\.\<\>\/\?]|[\b\^\s\!\@\#\$\%\^\&\*\(\)\_\+\-\=\[\]\{\}\;\'\:\"\b\|\,\.\<\>\/\?]$/.test(control.value)
const isValid=!/^[\b\^\s\!\\\\\$\%\\\&*(\)\\\\\+-\=\[\]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
转义字符串和正则表达式中的非特殊字符不会对结果产生任何影响,因此在所有字符上使用反斜杠更安全(无错误)。它使代码更易于理解。执行速度不会变慢

要跳出退格,请执行
\b
,而不是
\\

您不需要用于继续搜索的

无需在这些问题上退格:

*
|

检查开头和结尾是否没有需要与
[
]之间的字符一起使用的特殊字符
^
检查开头,
$
检查结尾。管道
|
用于确保检查开头和结尾

const isValid = !/^[\b\^\s\!\@\#\$\%\^\&\*\(\)\_\+\-\=\[\]\{\}\;\'\:\"\b\|\,\.\<\>\/\?]|[\b\^\s\!\@\#\$\%\^\&\*\(\)\_\+\-\=\[\]\{\}\;\'\:\"\b\|\,\.\<\>\/\?]$/.test(control.value)
const isValid=!/^[\b\^\s\!\\\\\$\%\\\&*(\)\\\\\+-\=\[\]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
转义字符串和正则表达式中的非特殊字符不会对结果产生任何影响,因此在所有字符上使用反斜杠更安全(无错误)。它使代码更易于理解。执行速度不会变慢

要跳出退格,请执行
\b
,而不是
\\

您不需要用于继续搜索的

无需在这些问题上退格:

*
|

如果删除“!”而改为检查允许的字符会怎么样?例如[a-zA-Z0-9]检查所有字母和数字。您的意思是第一个字符和最后一个字符之间的特殊字符是有效的,而不是无效的特殊字符吗?如果您删除“!”而改为检查允许的字符怎么办?例如[a-zA-Z0-9]检查所有字母和数字。您的意思是,第一个字符和最后一个字符之间的特殊字符对特殊字符无效吗?