格式的正则表达式:验证不会停止正确的字符



我是正则表达式的新手,我尝试只允许字母、数字、引号和以下字符:!.:?!_+=, -

我在guide模式中有下面的验证。如果我愿意,我可以只命名一个指南"&"并且它接受它,据我了解,这种验证应该阻止我。

validates :name,  presence: true, length: { maximum: 255 }, uniqueness: { case_sensitive: false },
format: { with: /[a-zA-Z 1-9 0!.'":?!_+=, -]/, message: "only allows letters, numbers, quotes and !.:?!_+=, -" }

不确定出了什么问题,我在 Rubular.com 中测试了正则表达式,它在那里工作。

编辑

测试后,结果发现它停止了"&",但让"&11"通过。如果无效密钥与有效密钥一起传递。也许我用错format:或者不应该为此使用format:

我简化了一些正则表达式,添加了正确的开始/结束行标记,并在末尾添加了+以匹配输入中是否有一个或多个字符。下面是它的样子:

/A[a-zA-Z0-9 !.'":?!_+=,-]+z/

如果你想有一个更干净的:

/A[w !.'":?!_+=,-]+z/

由于w匹配[a-zA-Z0-9]

最新更新