Ruby on rails 如何构造正则表达式来解释非连续字符?

Ruby on rails 如何构造正则表达式来解释非连续字符?,ruby-on-rails,regex,Ruby On Rails,Regex,我目前正在将此正则表达式用于我的姓名\A^[A-zA-Z',\s-]*\Z;但是,我不希望撇号、句点、逗号、空格或连字符有任何连续字符。我该怎么做?重要的部分是(?:[a-zA-Z]|[',\s-](?![',\s-]) 意思是: (?: [a-zA-Z] # letters | # or ['.,\s-] # any of these (?!['.,\s-]) # but in front c

我目前正在将此正则表达式用于我的姓名
\A^[A-zA-Z',\s-]*\Z
;但是,我不希望撇号、句点、逗号、空格或连字符有任何连续字符。我该怎么做?

重要的部分是
(?:[a-zA-Z]|[',\s-](?![',\s-])

意思是:

(?:
    [a-zA-Z]         # letters
|                    # or
    ['.,\s-]         # any of these
    (?!['.,\s-])     # but in front can not be another of these
)
但是,在这种情况下:

Guedes, Washington
------^^----------
将使名称无效,因此您可能希望从负面展望中删除
\s

希望有帮助。

这个怎么样(字符串,可能以一个终止符结尾)


我想你误解了要求。或者我做了。:)我一次只试着匹配一个名字,第一个,最后一个,中间等等。也许逗号是不需要的,尽管我最初包括了它。我只是稍微修改了一下,谢谢你的解释<代码>\A(?[A-zA-Z]|[',\s-](?![',\s-])*\Z例如,这与
D'Angelo
不匹配。@daveomcd:那么,修复您的要求:)也许我说连续字符时有点混乱,我说的是非A-Z字符只有连续字符。在“D'Angelo”中,“A”与撇号是连续的,因此,这不应该与我没有说得更清楚表示歉意,感谢您花时间来帮助!
\A^[a-zA-Z]*['.,\s-]?\z