我似乎已经支持自己了。我确信答案会让我想要在我的脑袋上打一块砖头,但我对正则表达式来说还不是那么好。所以,到此为止。
我需要修改这个正则表达式,以便在发现任何符号出现时失败。 (#)
我目前的正则表达式是这样的;
/^[A-Za-z\.\-\_\s]{1,80}$/i
我尝试了许多变体,例如;
/[^#]^[A-Za-z\.\-\_\s]{1,80}$/i
/^[[^#]A-Za-z\.\-\_\s]{1,80}$/i
/^[A-Za-z\.\-\_\s^#]{1,80}$/i
这些都不起作用。有人可以提供任何建议吗?
答案 0 :(得分:3)
您的原始正则表达式应该有效,因为#
不在您为该类指定的字符列表中。您不需要添加任何内容,如果其中有#
,则它已经失败。
答案 1 :(得分:2)
只需使用两个正则表达式:
/^[A-Za-z\.\-\_\s]{1,80}$/i
然后过滤您的输入,以便只保留与此正则表达式不匹配的内容:
/#/
在尝试构建“反向”正则表达式时,要比较要过滤掉的模式(然后忽略匹配的字符串而不是忽略补码)要容易得多。并且你没有理由将所有东西都融入一个正则表达式。