坚持正则表达式

时间:2011-11-29 02:04:06

标签: javascript regex

我似乎已经支持自己了。我确信答案会让我想要在我的脑袋上打一块砖头,但我对正则表达式来说还不是那么好。所以,到此为止。

我需要修改这个正则表达式,以便在发现任何符号出现时失败。 (#)

我目前的正则表达式是这样的;

/^[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

这些都不起作用。有人可以提供任何建议吗?

2 个答案:

答案 0 :(得分:3)

您的原始正则表达式应该有效,因为#不在您为该类指定的字符列表中。您不需要添加任何内容,如果其中有#,则它已经失败。

答案 1 :(得分:2)

只需使用两个正则表达式:

/^[A-Za-z\.\-\_\s]{1,80}$/i

然后过滤您的输入,以便只保留与此正则表达式不匹配的内容:

/#/

在尝试构建“反向”正则表达式时,要比较要过滤掉的模式(然后忽略匹配的字符串而不是忽略补码)要容易得多。并且你没有理由将所有东西都融入一个正则表达式。