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

时间:2015-10-28 13:49:11

标签: ruby-on-rails regex

我目前正在使用此正则表达式为我的名字\A^[a-zA-Z'.,\s-]*\z;但是,我不希望在撇号,句号,逗号,空格或连字符中有任何连续的字符。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

重要的部分是(?:[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

希望它有所帮助。

答案 1 :(得分:1)

这个怎么样(字母串,可能以其中一个终结者字符结尾)

\A^[a-zA-Z]*['.,\s-]?\z