Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 字母、空格和连字符的正则表达式_Ruby_Regex - Fatal编程技术网

Ruby 字母、空格和连字符的正则表达式

Ruby 字母、空格和连字符的正则表达式,ruby,regex,Ruby,Regex,正在寻找允许字母大小写、空格和破折号在ruby中进行验证的正则表达式。不能完全破解它 作为起点,我使用: validates :name, format: { with: /\A[a-zA-Z]+(?: [a-zA-Z]+)?\z/, allow_blank: true} 非常感谢 此正则表达式将允许字母、空格和连字符:/^[A-Za-z\s\-]+$/此正则表达式将允许字母、空格和连字符:/^[A-Za-z\s\-]+$/,如果您需要支持所有Unicode字母,并确保-和空格仅出现在字母之间

正在寻找允许字母大小写、空格和破折号在ruby中进行验证的正则表达式。不能完全破解它

作为起点,我使用:

validates :name, format: { with: /\A[a-zA-Z]+(?: [a-zA-Z]+)?\z/, allow_blank: true}

非常感谢

此正则表达式将允许字母、空格和连字符:/^[A-Za-z\s\-]+$/

此正则表达式将允许字母、空格和连字符:/^[A-Za-z\s\-]+$/

,如果您需要支持所有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]-a-或空白 \p{L}+-一个或多个Unicode字母 \z-字符串的结尾。 看


在注释中,您提到/\A[-A-Z\s]+\Z/i适用于您,但它也匹配空白字符串,或者是连字符和空格的混合字符串,因为它表示字符串的开头、一个或多个ASCII字母、空格或连字符,然后是字符串的结尾。这可用于只允许输入特定字符,但这不会验证太多。

如果需要支持所有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]-a-或空白 \p{L}+-一个或多个Unicode字母 \z-字符串的结尾。 看


在注释中,您提到/\A[-A-Z\s]+\Z/i适用于您,但它也匹配空白字符串,或者是连字符和空格的混合字符串,因为它表示字符串的开头、一个或多个ASCII字母、空格或连字符,然后是字符串的结尾。这可以用于只允许输入特定的字符,但这不会验证太多。

欢迎使用SO。我怀疑这个问题被否决了,因为不清楚你在问什么。我可以推荐一个资源,tho。您可以使用ruby中部分正则表达式的键。不同语言中有不同风格的正则表达式,您可以自己尝试一下。/\A[-A-Z\s]+\Z/i就足够了。另外,“λ”是字母吗?“呫”是一封信吗?“ả”是字母吗?如果您需要支持所有Unicode字母,请确保-和空格只出现在字母之间,并且不可能出现连续的空格/连字符,并且可能有任意数量的空格/连字符,请使用/\a\p{L}+?:[-]\p{L}+*\z/到目前为止,只有@Wiktor正确回答和注释,因为不要求允许使用空格,所以只允许使用空格。假设str=a\nb。那么str.match呢/\A[-A-Z\s]+\Z/i=>true,这是不正确的,而str.match/\A\p{L}+?:[-]\p{L}+*\z/=>false。只需将\s更改为空格,即可将前者限制为空格。我一次又一次地看到这个错误。欢迎来到SO。我怀疑这个问题被否决了,因为不清楚你在问什么。我可以推荐一个资源,tho。您可以使用ruby中部分正则表达式的键。不同语言中有不同风格的正则表达式,您可以自己尝试一下。/\A[-A-Z\s]+\Z/i就足够了。另外,“λ”是字母吗?“呫”是一封信吗?“ả”是字母吗?如果您需要支持所有Unicode字母,请确保-和空格只出现在字母之间,并且不可能出现连续的空格/连字符,并且可能有任意数量的空格/连字符,请使用/\a\p{L}+?:[-]\p{L}+*\z/到目前为止,只有@Wiktor正确回答和注释,因为不要求允许使用空格,所以只允许使用空格。假设str=a\nb。那么str.match呢/\A[-A-Z\s]+\Z/i=>true,这是不正确的,而str.match/\A\p{L}+?:[-]\p{L}+*\z/=>false。只需将\s更改为空格,即可将前者限制为空格。我一次又一次地看到这个错误。小心,^和$是Ruby中行的开头/结尾,而不是字符串。您几乎总是需要\A和\z。小心,^和$在Ruby中是行的开头/结尾,而不是字符串。您几乎总是希望使用\A和\z。