我有一个特定的验证场景。
字符串的第一个字符不应包含特殊字符,我可以使用
/^[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]+$/
来实现
但是后续字符不应该包含特定的特殊字符,即
!@$%^*+=\[\]{};:\\|<>?
我尝试使用正则表达式
/^[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?][!@$%^*+=\[\]{};:\\|<>?]+$/
并否定结果,但它不起作用。
我想允许除这些特殊字符之外的所有其他字符,因此我试图否定上述正则表达式的结果。
我的意思是,第一个字符应该接受除特殊字符之外的所有内容,后续字符应该接受除指定特殊字符之外的所有内容。
你很接近。只是缺少在字符类中使用
^
来否定它,也许用 +
而不是 *
来允许空字符串。
匹配字符串开头:
^
[^!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/\?]
[^!@$%^*+=\[\]{};:\\|<>\?]*
$
完整的正则表达式:
^[^!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/\?][^!@$%^*+=\[\]{};:\\|<>\?]*$
你们非常亲密。只需在字符类中错过 ~ ` 即可否定它。
完整的正则表达式:
/^[^!@`~#$%^&*()_+\-=\[\]{};':"\\|,.<>\/\?][^!@$%^*+=\[\]{};:\\|<>\?]*$/