我是正则表达式的新手,我尝试只允许字母、数字、引号和以下字符:!.:?!_+=, -
我在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]