寻找正则表达式以允许字母(大小写),空格和破折号在ruby中进行验证。不能完全破解。
我使用的起点是:
validates :name, format: { with: /\A[a-zA-Z]+(?: [a-zA-Z]+)?\z/, allow_blank: true}
非常感谢!
答案 0 :(得分:0)
此正则表达式将允许使用字母,空格和连字符:/^[A-Za-z\s\-]+$/
答案 1 :(得分:0)
如果您需要支持所有 Unicode 字母并确保 -
和空格只出现在字母之间并且不会出现连续的空格/连字符(并且可能有任意数量的空格/连字符),请使用>
/\A\p{L}+(?:[- ]\p{L}+)*\z/
/\A\p{L}+(?:[-\s]\p{L}+)*\z/
/\A\p{L}+(?:[-\p{Zs}\t]\p{L}+)*\z/
简而言之,
\A
- 匹配字符串的开头\p{L}+
- 一个或多个字母(?:[-\s]\p{L}+)*
- 匹配零次或多次出现的非捕获组
[-\s]
- -
或空格\p{L}+
- 一个或多个 Unicode 字母\z
- 字符串的结尾。参见regex demo。
在评论中,您提到 /\A[-A-Z\s]+\z/i
对您有用,但它也匹配空白字符串或连字符和空格混合的字符串,因为它的意思是“字符串的开头,一个或多个 ASCII 字母,空格或连字符,然后是字符串的结尾”。这可用于仅允许输入特定字符,但这并不能有效验证。