正则表达式 - 第一个字符不应包含特殊字符,后续字符不应包含少数特殊字符

RegEx- first character should not contain special characters and subsequent characters should not contain few special characters

我有一个特定的验证方案。

字符串 第一个字符 不应包含特殊字符 我可以使用 /^[!@#$%^&*()_+\-=\[\]{};':"\|,.<>\/?]+$/

但是后面的字符不能包含特定的特殊字符,即!@$%^*+=\[\]{};:\|<>?

我尝试使用正则表达式 /^[!@#$%^&*()_+\-=\[\]{};':"\|,.<>\/?][!@$%^*+=\[\]{};:\|<>?]+$/ 并否定结果,但它不起作用。

我想允许除这些特殊字符以外的所有其他字符,所以我试图否定上述正则表达式的结果。

我的意思是,第一个字符应该接受除特殊字符以外的所有内容,随后的字符应该接受除指定特殊字符之外的所有内容。

你很接近。只是缺少在字符 class 中使用 ^ 来否定它,也许 + 而不是 * 允许空字符串。

匹配字符串开头:^
匹配一个不是 !@#$%^&*()_+-=[]{};':"|,.<>/?: [^!@#$%^&*()_+\-=\[\]{};':"\|,.<>\/\?]
匹配不包含 !@$%^*+=[]{};:|<>?: [^!@$%^*+=\[\]{};:\|<>\?]*[=26 之一的任意长度的字符串=] 匹配字符串结尾:$

完整的正则表达式:^[^!@#$%^&*()_+\-=\[\]{};':"\|,.<>\/\?][^!@$%^*+=\[\]{};:\|<>\?]*$